1. 程式人生 > >利用Tkinter設計一個小Gui程式(附pyinstaller打包)

利用Tkinter設計一個小Gui程式(附pyinstaller打包)

Tkinter簡單介紹

是綁定了 Python 的 Tk GUI 工具集 ,就是Python 包裝的Tcl程式碼,通過內嵌在 Python 直譯器內部的 Tcl 直譯器實現, Tkinter

的呼叫轉換成 Tcl 命令,然後交給 Tcl 直譯器進行解釋,實現 Python 的 GUI 介面。

對比Tk和其它語言的繫結,比如 PerlTk ,是直接由 Tk 中的 C 庫實現的。

優點:

歷史最悠久, Python 事實上的標準 GUI , Python 中使用 Tk GUI 工具集的標準介面,已經包括在標準的 Python Windows 安

裝中,著名的 IDLE 就是使用 Tkinter 實現 GUI 的建立的 GUI 簡單,學起來和用起來也簡單。

建立視窗

from tkinter import *

#建立視窗
window=Tk()
#建立標題
window.title("你喜歡我嗎?")
#視窗大小和位置(中間為字母x)
window.geometry("380x420")
window.geometry("+500+240")
#window.geometry("380x420+500+240")

#顯示視窗(訊息迴圈)
window.mainloop()

新增label和button控制元件



#標籤控制元件
label=Label(window,text="hey,小姐姐",font=("微軟雅黑",15),fg="red")
#定位    網格佈局 pack包 place位置
label.grid(row=0,column=0)

label1=Label(window,text="喜歡我嗎?",font=("微軟雅黑",30))
#對其方式sticky
label1.grid(row=1,column=1,sticky=E)

#顯示檔案
photo=PhotoImage(file="cc.png")
imageLabel=Label(window,image=photo)
imageLabel.grid(row=2,columnspan=2)



#按鈕控制元件
but=Button(window,text="喜歡",height=2,width=15,command=Love)
but.grid(row=3,column=0,sticky=W)

but1=Button(window,text="不喜歡",command=unLove)
but1.grid(row=3,column=1,sticky=E)

當點選喜歡button時

def Love():
"""點選確定時關閉所有視窗,點選關閉視窗按鈕無反應"""
    #頂級視窗(和messagebox有區別)
    love=Toplevel(window)
    love.geometry('300x180+520+260')
    love.title("好巧,我也是")
    label=Label(love,text="好巧,我也是",font=("微軟雅黑",20))
    label.pack()
    label1=Label(love,text="加個微信吧~~",font=("微軟雅黑",20))
    label1.pack()
    entry=Entry(love,font=("微軟雅黑",18))
    entry.pack()
    btn=Button(love,text="確定",width=10,height=2,command=closeAllWindow)
    btn.pack()
    love.protocol("WM_DELETE_WINDOW",closelove)

def closelove():
    return 

當點選不喜歡button時

def closeunLove():
    #messagebox.showinfo("再考慮一下","再考慮一下")
    unLove()

def unLove():
"""點選不喜歡時,彈出的視窗。點選好的,退出這個視窗,點選關閉,重新彈出一個視窗"""
    unlove=Toplevel(window)
    unlove.geometry('300x100+520+260')
    unlove.title("再考慮考慮")
    label=Label(unlove,text="再考慮考慮",font=("微軟雅黑",25))
    label.pack()
    btn=Button(unlove,text="好的",width=10,height=2,command=unlove.destroy)
    btn.pack()
    unlove.protocol("WM_DELETE_WINDOW",closeunLove)

當點選關閉視窗時不讓退出

from tkinter import messagebox

#使用者關閉視窗觸發的事件(第一個刪除視窗,第二個為函式名,即過程)
window.protocol('WM_DELETE_WINDOW',closeWindow)

def closeWindow():
    messagebox.showinfo(title="警告",message="好好回答,不許關閉")

pyinstaller的應用

  1. 在cmd裡面通過pip安裝pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyinstaller (使用國內的映象快很多)
  2. 按住shift鍵,右鍵點選在此處開啟命令視窗
  3. 使用命令pyinstaller -F xxx.py打包成.exe檔案
  4. 想去掉黑視窗則輸入pyinstaller -F -w  xxx.py
  5. 想修改圖示則輸入pyinstaller  -F -i xx.ico  xxx.py
  6. 圖示的型別是ico型別,可以在www.bitbug.com轉換成ico圖形,路徑什麼的最好沒有中文,否則易出現問題