python tkinter模塊的簡(jiǎn)單使用
由于一些小原因,被迫開(kāi)始了tkinter一次實(shí)戰(zhàn)演練。在此做一些記錄,總結(jié)以及給自己留一些輪子哈哈哈哈哈哈
tkinter 是 Python 的一個(gè)GUI庫(kù),本次實(shí)戰(zhàn)完全使用tkinter,不牽扯任何其他第三方庫(kù)的使用。
1.任務(wù)要求
畫(huà)一個(gè)具有上傳病患信息以及圖片功能的用戶(hù)界面
2.簡(jiǎn)單設(shè)計(jì)
由于時(shí)間緊迫且只要求可視化,背后沒(méi)有必要太過(guò)精細(xì),所以簡(jiǎn)單設(shè)計(jì)思路是,利用下拉列表實(shí)現(xiàn)病患信息的填寫(xiě),用text顯示選擇圖片的路徑。
表面上的組件包括:兩個(gè)Button:選擇目錄 SELECT THE DIRECTORY 和 選定(也就是上傳按鈕)DETECT 六個(gè)Combobox、七個(gè)Label,一個(gè)scrolledtext和一個(gè)canvas。
tips:由于要求并沒(méi)有提及向哪里上傳,如何上傳并且要求較為美觀的可視化以及時(shí)間關(guān)系,其實(shí)上傳按鈕就是一個(gè)出現(xiàn)消息彈窗的按鈕,沒(méi)有真正的上傳功能。
實(shí)現(xiàn)效果:
3.模塊實(shí)現(xiàn)
1)canvas
創(chuàng)建畫(huà)布的主要目的是將從word中保存的藝術(shù)字添加到主界面當(dāng)中。
canvas = tk.Canvas(window, height=200, width=1000)#創(chuàng)建畫(huà)布 image_file = tk.PhotoImage(file='1.gif')#加載圖片文件 image = canvas.create_image(500,100, anchor='center', image=image_file)#將圖片置于畫(huà)布上 canvas.pack(side='top')#放置畫(huà)布(為上端)
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 name label.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) #病人電話(huà) 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ù)人電話(huà) 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()#定義變量 用來(lái)存放圖片路徑 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 tk import tkinter.messagebox,tkinter.filedialog,tkinter.font from tkinter.scrolledtext import ScrolledText from 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í)間比較緊迫,簡(jiǎn)單的做了可視化的優(yōu)化就交付了這個(gè)界面。交付之后出現(xiàn)了一些問(wèn)題。在macos中button背景顏色不顯示,通過(guò)將button屬性bg修改為highlightbackground簡(jiǎn)單解決了不顯示的問(wèn)題,但是點(diǎn)擊button之后,button的背景顏色變?yōu)榘咨?,只剩下邊框的顏色還存在。通過(guò)查找官方文檔,好像是tkinter本身的缺陷。建議使用ttk,或者引入新的庫(kù) tkmacos來(lái)解決這個(gè)問(wèn)題。(未能付諸實(shí)現(xiàn),純猜測(cè))
以上就是python tkinter模塊的簡(jiǎn)單使用的詳細(xì)內(nèi)容,更多關(guān)于python tkinter模塊的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python開(kāi)發(fā)寶典CSV JSON數(shù)據(jù)處理技巧詳解
在Python中處理CSV和JSON數(shù)據(jù)時(shí),需要深入了解這兩種數(shù)據(jù)格式的讀取、寫(xiě)入、處理和轉(zhuǎn)換方法,下面將詳細(xì)介紹如何在Python中處理CSV和JSON數(shù)據(jù),并提供一些示例和最佳實(shí)踐2023-11-11Python中創(chuàng)建游戲的第一步之安裝Pygame庫(kù)教程
Pygame是跨平臺(tái)Python模塊,專(zhuān)為電子游戲設(shè)計(jì),包含圖像、聲音,下面這篇文章主要給大家介紹了關(guān)于Python中創(chuàng)建游戲的第一步之安裝Pygame庫(kù)的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-06-06Python機(jī)器學(xué)習(xí)之實(shí)現(xiàn)模型持久化與加載
在實(shí)際的機(jī)器學(xué)習(xí)項(xiàng)目中,我們通常需要將訓(xùn)練好的模型保存到磁盤(pán),本文我們會(huì)介紹如何在Python中使用pickle和joblib庫(kù)將訓(xùn)練好的模型持久化到磁盤(pán),需要的可以參考一下2023-05-05PyQt5實(shí)現(xiàn)用戶(hù)登錄GUI界面及登錄后跳轉(zhuǎn)
PyQt5是強(qiáng)大的GUI工具之一,通過(guò)其可以實(shí)現(xiàn)優(yōu)秀的桌面應(yīng)用程序。本文主要介紹了PyQt5實(shí)現(xiàn)用戶(hù)登錄GUI界面及登錄后跳轉(zhuǎn),具有一定的參考價(jià)值,感興趣的可以了解一下2021-11-11解決Django刪除migrations文件夾中的文件后出現(xiàn)的異常問(wèn)題
今天小編就為大家分享一篇解決Django刪除migrations文件夾中的文件后出現(xiàn)的異常問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-08-08詳解Python如何利用pdfplumber提取PDF中的表格
pdfplumber 是一個(gè)開(kāi)源的 python 工具庫(kù) ,它可以輕松的獲取 PDF 文本內(nèi)容、標(biāo)題、表格、尺寸等各種信息,今天來(lái)介紹如何使用它來(lái)提取 PDF 中的表格,文中通過(guò)代碼和圖片講解的非常詳細(xì),需要的朋友可以參考下2024-04-04Python cookbook(數(shù)據(jù)結(jié)構(gòu)與算法)將序列分解為單獨(dú)變量的方法
這篇文章主要介紹了Python cookbook(數(shù)據(jù)結(jié)構(gòu)與算法)將序列分解為單獨(dú)變量的方法,結(jié)合實(shí)例形式分析了Python序列賦值實(shí)現(xiàn)的分解成單獨(dú)變量功能相關(guān)操作技巧,需要的朋友可以參考下2018-02-02解決python3.6用cx_Oracle庫(kù)連接Oracle的問(wèn)題
這篇文章主要介紹了解決python3.6用cx_Oracle庫(kù)連接Oracle的問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-12-12Python實(shí)現(xiàn)天氣查詢(xún)軟件
今天給大家?guī)?lái)一個(gè)不是那么實(shí)用的小工具-天氣查詢(xún),文中詳細(xì)介紹了如何實(shí)用Python實(shí)現(xiàn)天氣查詢(xún)系統(tǒng),需要的朋友可以參考下2021-06-06