GUI制作仿qq窗口
阿新 • • 發佈:2018-08-13
引號 mman del 聊天 完全 == width 創建 tms
使用工具:python3.6, pycharm
使用模塊:
tkinter模塊:("Tk 接口")是Python的標準Tk GUI工具包的接口,位Python的內置模塊,直接import tkinter即可使用
time模塊:用於時間顯示
註:關於tkinter模塊可以參考http://www.cnblogs.com/kaituorensheng/p/3287652.html
效果圖:
如果想直接看所有代碼,可以忽略之前所有,直接跳到第5步。
1.產生第一個窗口
from tkinter import * import time t = Tk()#實例化一個t對象 t.title(‘與星夜聊天中‘)#顯示標題 t.mainloop()#命令,進入消息循環
看到的窗口可能沒有顯示完全標題,可以用鼠標拉伸窗口。
2.窗口已經有了,接下來就是布局,可以看到,窗口大概可以分為4個部分A,B,C,D.
from tkinter import * import time def main(): t = Tk()#實例化一個t對象 t.title(‘與星夜聊天中‘)#顯示標題 #創建Frame容器 A = Frame(width=500, height=320, bg=‘white‘) B = Frame(width=500, height=150, bg=‘white‘) C = Frame(width=500, height=30) D = Frame(width=200, height=500) #使用grid布局 A.grid() B.grid() C.grid() D.grid(row=0, column=1, rowspan=3, padx=2, pady=3) t.mainloop()#命令,進入消息循環 if __name__ == ‘__main__‘: main()
頁面框架已經出來
3.添加控件按鈕發送,取消
from tkinter import * import time def main(): t = Tk()#實例化一個t對象 t.title(‘與星夜聊天中‘)#顯示標題 #創建Frame容器 A = Frame(width=500, height=320, bg=‘white‘) B = Frame(width=500, height=150, bg=‘white‘) C= Frame(width=500, height=30) D = Frame(width=200, height=500) #使用grid布局 A.grid() B.grid() C.grid() D.grid(row=0, column=1, rowspan=3, padx=2, pady=3) txtMsglist = Text(A) # 展示文本的框框 txtMsg = Text(B) # 編輯文字 # 按鈕,以及圖片展示 btnSend = Button(C, text=‘發送‘, width=8) btnCancel = Button(C, text=‘取消‘, width=8) imageLink = PhotoImage(file="oEfV-hhnunsq0909655.gif") # 只能打開gif,雙引號裏面可以寫自己的圖片目錄 lblImage = Label(D, image=imageLink) # 顯示文件或圖片 btnSend.grid(row=2, column=1) btnCancel.grid(row=2, column=2) lblImage.grid() txtMsglist.grid() txtMsg.grid() t.mainloop()#命令,進入消息循環 if __name__ == ‘__main__‘: main()
按鈕圖片都已經出來了,不過大小改變了
4.插件都會延伸,根據內容自動調節大小,所以要固定大小
from tkinter import * import time def main(): t = Tk()#實例化一個t對象 t.title(‘與星夜聊天中‘)#顯示標題 #創建Frame容器 A = Frame(width=500, height=320, bg=‘white‘) B = Frame(width=500, height=150, bg=‘white‘) C = Frame(width=500, height=30) D = Frame(width=200, height=500) #使用grid布局 A.grid() B.grid() C.grid() D.grid(row=0, column=1, rowspan=3, padx=2, pady=3) txtMsglist = Text(A) # 展示文本的框框 txtMsg = Text(B) # 編輯文字 # 按鈕,以及圖片展示 btnSend = Button(C, text=‘發送‘, width=8) btnCancel = Button(C, text=‘取消‘, width=8) imageLink = PhotoImage(file="oEfV-hhnunsq0909655.gif") # 只能打開gif,雙引號裏面可以寫自己的圖片目錄 lblImage = Label(D, image=imageLink) # 顯示文件或圖片 btnSend.grid(row=2, column=1) btnCancel.grid(row=2, column=2) lblImage.grid() txtMsglist.grid() txtMsg.grid() A.grid_propagate(0) B.grid_propagate(0) C.grid_propagate(0) D.grid_propagate(0) t.mainloop()#命令,進入消息循環 if __name__ == ‘__main__‘: main()
大小固定了,基本框架已經完成
5.在發送窗口可以發送文字,也可以取消文字,顯示窗口顯示時間,人,消息。
from tkinter import * import time def main(): #發送作用 def sendMsg(): strMsg = ‘我:‘ + time.strftime("%Y-%m-%d %H:%M:%S",time.localtime()) + ‘\n‘ txtMsglist.insert(END,strMsg) txtMsglist.insert(END,txtMsg.get(‘0.0‘,END)) txtMsg.delete(‘0.0‘,END) #取消 def cancelMsg(): txtMsg.delete(‘0.0‘, END) t = Tk()#實例化對象 t.title(‘與星夜聊天中‘) #1.創建frame容器,框架 A = Frame(width=500,height=320,bg=‘white‘) B = Frame(width=500,height=150,bg=‘white‘) C = Frame(width=500,height=30) D = Frame(width=200,height=500) #2.布局 A.grid() B.grid() C.grid() D.grid(row=0,column=1,rowspan=3,padx=2,pady=3) #添加控件 #文本框----可以顯示多行文本 txtMsglist = Text(A)#展示文本的框框 txtMsg = Text(B)#編輯文字 #按鈕,以及圖片展示 btnSend = Button(C,text=‘發送‘,width=8,command=sendMsg) btnCancel = Button(C,text=‘取消‘,width=8,command=cancelMsg) imageLink = PhotoImage(file="oEfV-hhnunsq0909655.gif")#只能打開gif lblImage = Label(D,image=imageLink)#顯示文件或圖片 btnSend.grid(row=2,column=1) btnCancel.grid(row=2,column=2) lblImage.grid() txtMsglist.grid() txtMsg.grid() #插件都會延申,根據內容自動調節大小,所以要固定大小 A.grid_propagate(0) B.grid_propagate(0) C.grid_propagate(0) D.grid_propagate(0) t.mainloop()#命令,進入消息循環 if __name__ == ‘__main__‘: main()
仿qq窗口已經完成了。
GUI制作仿qq窗口