1. 程式人生 > >GUI制作仿qq窗口

GUI制作仿qq窗口

引號 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窗口