利用Tkinter設計一個小Gui程式(附pyinstaller打包)
阿新 • • 發佈:2019-02-01
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的應用
- 在cmd裡面通過pip安裝pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyinstaller (使用國內的映象快很多)
- 按住shift鍵,右鍵點選在此處開啟命令視窗
- 使用命令pyinstaller -F xxx.py打包成.exe檔案
- 想去掉黑視窗則輸入pyinstaller -F -w xxx.py
- 想修改圖示則輸入pyinstaller -F -i xx.ico xxx.py
- 圖示的型別是ico型別,可以在www.bitbug.com轉換成ico圖形,路徑什麼的最好沒有中文,否則易出現問題