python tkinter模塊的簡單使用
由于一些小原因,被迫開始了tkinter一次實(shí)戰(zhàn)演練。在此做一些記錄,總結(jié)以及給自己留一些輪子哈哈哈哈哈哈tkinter 是 Python 的一個(gè)GUI庫,本次實(shí)戰(zhàn)完全使用tkinter,不牽扯任何其他第三方庫的使用。
1.任務(wù)要求畫一個(gè)具有上傳病患信息以及圖片功能的用戶界面
2.簡單設(shè)計(jì)由于時(shí)間緊迫且只要求可視化,背后沒有必要太過精細(xì),所以簡單設(shè)計(jì)思路是,利用下拉列表實(shí)現(xiàn)病患信息的填寫,用text顯示選擇圖片的路徑。表面上的組件包括:兩個(gè)Button:選擇目錄 SELECT THE DIRECTORY 和 選定(也就是上傳按鈕)DETECT 六個(gè)Combobox、七個(gè)Label,一個(gè)scrolledtext和一個(gè)canvas。
tips:由于要求并沒有提及向哪里上傳,如何上傳并且要求較為美觀的可視化以及時(shí)間關(guān)系,其實(shí)上傳按鈕就是一個(gè)出現(xiàn)消息彈窗的按鈕,沒有真正的上傳功能。
實(shí)現(xiàn)效果:
1)canvas創(chuàng)建畫布的主要目的是將從word中保存的藝術(shù)字添加到主界面當(dāng)中。
canvas = tk.Canvas(window, height=200, width=1000)#創(chuàng)建畫布image_file = tk.PhotoImage(file=’1.gif’)#加載圖片文件image = canvas.create_image(500,100, anchor=’center’, image=image_file)#將圖片置于畫布上canvas.pack(side=’top’)#放置畫布(為上端)
tips:由于tkinter本身僅支持 gif和ppm格式圖片文件,所以我手動(dòng)改了圖片的后綴為gif(狗頭)
2)combobox
#病人姓名label=tk.Label(window, text=’Patient’s Name:’,height=2,font=('微軟雅黑', 16)) #創(chuàng)建label顯示 信息為patient‘s namelabel.place(x=90, y=150)#label 位置cb_1=ttk.Combobox(window)#創(chuàng)建下拉框cb_1['value']=('張三','克里斯','亞伯拉罕')#添加默認(rèn)信息cb_1.place(x=270, y=170)#下拉框位置#病人神份證號(hào)label=tk.Label(window, text=’Patient’s ID : ’,height=2,font=('微軟雅黑', 16))#如上label.place(x=90, y=200)cb_2=ttk.Combobox(window)cb_2['value']=('215469789725315978','123415489674534112','56487561357456123')cb_2.place(x=270, y=220)#病人電話label=tk.Label(window, text=’Patient’s TEL : ’,height=2,font=('微軟雅黑', 16))label.place(x=90, y=250)cb_3=ttk.Combobox(window)cb_3['value']=('13810101010','13921212121','19578956432')cb_3.place(x=270, y=270)#陪護(hù)人姓名label=tk.Label(window, text=’Relatives Name:’,height=2,font=('微軟雅黑', 16))label.place(x=520, y=150)cb_4=ttk.Combobox(window)cb_4['value']=('張三','克里斯','亞伯拉罕')cb_4.place(x=700, y=170)#陪護(hù)人電話label=tk.Label(window, text=’Relatives TEL :’,height=2,font=('微軟雅黑', 16))label.place(x=520, y=200)cb_5=ttk.Combobox(window)cb_5['value']=('13810101010','13921212121','19578956432')cb_5.place(x=700, y=220)#陪護(hù)人郵件label=tk.Label(window, text=’Relatives Email:’,height=2,font=('微軟雅黑', 16))label.place(x=520, y=250)cb_6=ttk.Combobox(window)cb_6['value']=('13810101010','13921212121','19578956432')cb_6.place(x=700, y=270)
3)label&scrolledText
var_name = tk.StringVar()#定義變量 用來存放圖片路徑label=tk.Label(window, text=’Picture Path:’,height=2,font=('微軟雅黑', 16))#label 顯示信息Picture Path:label.place(x=90, y=315)#設(shè)置label位置text = tk.scrolledtext.ScrolledText(window,width=53,height=1,font=('微軟雅黑', 16),fg=’#22C9C9’)#創(chuàng)建下拉框text.place(x=230, y=320)#設(shè)置下拉框位置
4)button
# dir_load and detect button#創(chuàng)建選擇文件按鈕btn_login = tk.Button(window, text=’select the directory’, command=load_dir,width=15,height=1,font=('微軟雅黑', 16),bg=’#22C9C9’,fg=’white’)#定義一個(gè)`button`按鈕,名為`Login`,觸發(fā)命令為`usr_login`btn_login.place(x=250, y=420)#創(chuàng)建上傳按鈕btn_sign_up = tk.Button(window, text=’detect’, command=detect_w,width=15,height=1,font=('微軟雅黑', 16),bg=’#FF4081’,fg=’white’)btn_sign_up.place(x=525, y=420)
5)def
def load_dir():#選擇目錄函數(shù) var_name=tkinter.filedialog.askopenfilename()# 選擇目錄,返回目錄名 var_name+=’n’ text.insert(’end’,var_name) print(var_name)def detect_w():#上傳彈窗函數(shù) print(tk.messagebox.showinfo(title=’message’, message=’Upload Succeeded !’))
tips:由于Python執(zhí)行順序自上而下,所以觸發(fā)函數(shù)要放在 button的上面。
6)tkinter框架
import tkinter as tkimport tkinter.messagebox,tkinter.filedialog,tkinter.fontfrom tkinter.scrolledtext import ScrolledTextfrom tkinter import ttk#創(chuàng)建基本窗口window=tk.Tk()#創(chuàng)建窗口window.geometry(’1000x600+200+200’)#修改窗口大小及初始位置window.title(’Picture Process’)#窗口標(biāo)題window.mainloop()#主界面顯示循環(huán)函數(shù)4.總結(jié)
時(shí)間比較緊迫,簡單的做了可視化的優(yōu)化就交付了這個(gè)界面。交付之后出現(xiàn)了一些問題。在macos中button背景顏色不顯示,通過將button屬性bg修改為highlightbackground簡單解決了不顯示的問題,但是點(diǎn)擊button之后,button的背景顏色變?yōu)榘咨皇O逻吙虻念伾€存在。通過查找官方文檔,好像是tkinter本身的缺陷。建議使用ttk,或者引入新的庫 tkmacos來解決這個(gè)問題。(未能付諸實(shí)現(xiàn),純猜測)
以上就是python tkinter模塊的簡單使用的詳細(xì)內(nèi)容,更多關(guān)于python tkinter模塊的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!
相關(guān)文章:
1. PHP循環(huán)與分支知識(shí)點(diǎn)梳理2. 解析原生JS getComputedStyle3. ASP中實(shí)現(xiàn)字符部位類似.NET里String對(duì)象的PadLeft和PadRight函數(shù)4. XML入門精解之結(jié)構(gòu)與語法5. 使用純HTML的通用數(shù)據(jù)管理和服務(wù)6. javascript xml xsl取值及數(shù)據(jù)修改第1/2頁7. UDDI FAQs8. 利用CSS3新特性創(chuàng)建透明邊框三角9. ASP基礎(chǔ)入門第八篇(ASP內(nèi)建對(duì)象Application和Session)10. ElementUI下拉框選擇后不顯示值問題及解決
