电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

如何Tkinter模塊編寫Python圖形界面

瀏覽:6日期:2022-07-08 13:34:05

一、為何使用Tkinter而非PyQt

眾所周知,在Python中創建圖形界面程序有很多種的選擇,其中PyQt和wxPython都是很熱門的模塊包,這些第三方的圖形界面模塊功能強大、配置豐富,界面美觀,是很多人的選擇。

州的先生也經常使用PyQt5來為Python程序寫上圖形界面,以方便程序的使用。

而今天,我們要介紹的是Python內置的一個圖形界面模塊——tkinter。

在網絡上有很多抱怨Tkinter模塊的言論,比如:界面丑、不靈活、擴展功能差、模塊少……等等,誠然,Tkinter確實有這些毛病或者說是缺點,但是它也并非是一無是處。

Tkinter最大的優勢,在于其是Python的內置模塊;僅僅是這一點,就可以帶來很多優點。由于是內置模塊,所以不需要進行額外的安裝,這也就避免了很多剛剛接觸的小伙伴可以順利地開始import,而非各種pip安裝失敗或者是到處找各種版本可行的安裝包(PyQt5就有很多這樣的情況)。

同時,因為其內置模塊的屬性,使得其在程序打包為EXE或其他可執行文件的時候,打包出來的程序文件不會特別的大,這樣對程序的傳播還是很有用處的。

想一想,簡簡單單地寫了一個小工具,結果打包出來的文件有幾十兆之大,很是尷尬的。

介紹了那么多,下面,我們開始正式學習使用Tkinter編寫Python圖形界面程序。

二、創建一個基本的Tkinter程序

導入Tkinter模塊

Tkinter模塊的導入很簡單,直接使用命令:

import tkinter

即可。

同時一般約定俗成其模塊名簡寫為tk,所以導入命令為:

import tkinter as tk

實例化一個Tk類

所有的圖形界面都有一個最頂級的容器,在PyQt5中有MainWindow、Widget等,而在Tkinter中,最常見最基礎的則是Tk()類,當然在程序比較大或者圖形窗口比較多的時候,使用Frame或Toplevel等容器部件會更加方便,但是在這里我們才剛剛使用Tkinter,所以就用Tk()類作為圖形界面的最頂級容器:

import tkinter as tkroot = tk.Tk() # 實例化一個Tk()主窗口

設置窗口標題

上一步實例化了一個Tk()類并賦值給root變量之后,我們就擁有了一個TK窗口,接下來我們通過它的title()方法為窗口設置標題:

import tkinter as tkroot = tk.Tk()root.title('第一個Tkinter程序')

這樣,我們就將窗口的標題設置為了“第一個Tkinter程序”。

運行圖形界面窗口

在創建了一個基本的窗口之后,我們如何將這個圖形界面窗口運行起來呢?在PyQt5中我們可以使用窗口的show()方法來啟動窗口主循環,而在Tkinter中,我們則可以使用窗口的mainloop()方法啟動窗口的主循環,使得圖形界面窗口運行起來:

import tkinter as tkroot = tk.Tk()root.title('第一個Tkinter程序')root.mainloop()

這樣,我們創建的圖形界面窗口將在Python文件被運行是出現。其效果如下圖所示:

如何Tkinter模塊編寫Python圖形界面

創建一個按鈕

在上面,我們創建了一個只有一個窗口的圖形界面,現在我們往里面再添加一些小部件,比如按鈕;在Tkinter中,按鈕為tk.Button()類,通過實例化這個類,我們能創建一個按鈕部件:

import tkinter as tk # 引入tkinter模塊root = tk.Tk() # 實例化一個TK()類btn = tk.Button(root,text=’點我吧’) # 實例化一個按鈕類,父元素為rootbtn.pack(padx=200,pady=50) # 設置按鈕的大小root.title(’第一個Tkinter程序’) # 設置圖形界面標題root.mainloop()

在這里,我們實例化了一個父類為root的Button()類,并且設置了按鈕的文本。然后通過它的pack()方法設置的按鈕的長度和寬度。繼續運行程序,我們將會得到如下圖所示的圖形界面程序:

如何Tkinter模塊編寫Python圖形界面

為按鈕綁定一個命令

上面創建的圖形界面包含了一個窗口和一個按鈕,但是按鈕放著有什么用呢?我們可以將它綁定到一個函數來,來實現點擊事件的反饋。這在PyQt5中是一個很重要的概念——信號槽。而在Tkinter中也有類似的概念,在接下來的文章中,我們會逐步涉及到。 我們首先創建一個簡單的函數,用于在控制臺中打印一個字符串:

def tell_you(): print('州的先生Tkinter教程')

然后通過按鈕的config()方法,為按鈕配置一個命令:

import tkinter as tk # 引入tkinter模塊def tell_you(): print('州的先生Tkinter教程')root = tk.Tk() # 實例化一個TK()類btn = tk.Button(root,text=’點我吧’) # 實例化一個按鈕類,父元素為rootbtn.config(command=tell_you)btn.pack(padx=200,pady=50) # 設置按鈕的大小root.title(’第一個Tkinter程序’) # 設置圖形界面標題root.mainloop()

這樣,當我們點擊按鈕的時候,程序就會調用tell_you()函數,在控制臺打印出“州的先生Tkinter教程”字符串,其效果如下圖所示:

如何Tkinter模塊編寫Python圖形界面

三、模塊化Tkinter程序

在上面的程序中,我們所有的變量都是全局變量,無論是根窗口還是按鈕小部件。這在程序很小的時候,或許沒有問題,但是當我們添加的部件越來越多的時候,就很不方便維護了。基于此,我們可以使用面向對象的方法來重新組織我們的圖形界面程序。以類和對象的方式作為圖形界面窗口的組織單元。

import tkinter as tkclass MainWindows(tk.Tk): def __init__(self): super().__init__() # 初始化基類 self.title('第一個程序') self.ini_ui() def ini_ui(self): self.btn = tk.Button(self,text=’點我吧’) self.btn.pack(padx=200,pady=30) self.btn.config(command=self.tell_you) def tell_you(self): print('州的先生Tkinter教程')if __name__ == ’__main__’: app = MainWindows() app.mainloop()

現在,每一個變量都只限于MainWindows()內;這樣,我們就將第一個Tkinter圖形界面程序改造成了面對對象式。運行代碼,也會得到和之前一樣的圖形界面程序:

如何Tkinter模塊編寫Python圖形界面

以上就是如何Tkinter模塊編寫Python圖形界面的詳細內容,更多關于Python圖形界面的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 智能终端_RTU_dcm_北斗星空自动化科技 | 气动隔膜泵厂家-温州永嘉定远泵阀有限公司 | 河南新乡德诚生产厂家主营震动筛,振动筛设备,筛机,塑料震动筛选机 | 地磅-地秤-江阴/无锡地磅-江阴天亿计量设备有限公司_ | 山东PE给水管厂家,山东双壁波纹管,山东钢带增强波纹管,山东PE穿线管,山东PE农田灌溉管,山东MPP电力保护套管-山东德诺塑业有限公司 | 深圳标识制作公司-标识标牌厂家-深圳广告标识制作-玟璟广告-深圳市玟璟广告有限公司 | 无菌实验室规划装修设计-一体化实验室承包-北京洁净净化工程建设施工-北京航天科恩实验室装备工程技术有限公司 | 烘箱-工业烘箱-工业电炉-实验室干燥箱 - 苏州华洁烘箱制造有限公司 | arch电源_SINPRO_开关电源_模块电源_医疗电源-东佑源 | 振动筛,震动筛,圆形振动筛,振动筛价格,振动筛厂家-新乡巨宝机电 蒸汽热收缩机_蒸汽发生器_塑封机_包膜机_封切收缩机_热收缩包装机_真空机_全自动打包机_捆扎机_封箱机-东莞市中堡智能科技有限公司 | 南京PVC快速门厂家南京快速卷帘门_南京pvc快速门_世界500强企业国内供应商_南京美高门业 | 济南品牌包装设计公司_济南VI标志设计公司_山东锐尚文化传播 | ZHZ8耐压测试仪-上海胜绪电气有限公司| 彩信群发_群发彩信软件_视频短信营销平台-达信通| 欧必特空气能-商用空气能热水工程,空气能热水器,超低温空气源热泵生产厂家-湖南欧必特空气能公司 | 科昊仪器超纯水机系统-可成气相液氮罐-美菱超低温冰箱-西安昊兴生物科技有限公司 | 自动记录数据电子台秤,记忆储存重量电子桌称,设定时间记录电子秤-昆山巨天 | 东莞螺杆空压机_永磁变频空压机_节能空压机_空压机工厂批发_深圳螺杆空压机_广州螺杆空压机_东莞空压机_空压机批发_东莞空压机工厂批发_东莞市文颖设备科技有限公司 | 聚合氯化铝价格_聚合氯化铝厂家_pac絮凝剂-唐达净水官网 | 卫生人才网-中国专业的医疗卫生医学人才网招聘网站! | 塑料托盘厂家直销-吹塑托盘生产厂家-力库塑业【官网】 | 上海冠顶工业设备有限公司-隧道炉,烘箱,UV固化机,涂装设备,高温炉,工业机器人生产厂家 | 激光内雕_led玻璃_发光玻璃_内雕玻璃_导光玻璃-石家庄明晨三维科技有限公司 激光内雕-内雕玻璃-发光玻璃 | 洛阳永磁工业大吊扇研发生产-工厂通风降温解决方案提供商-中实洛阳环境科技有限公司 | 沈阳庭院景观设计_私家花园_别墅庭院设计_阳台楼顶花园设计施工公司-【沈阳现代时园艺景观工程有限公司】 | 培训一点通 - 合肥驾校 - 合肥新亚驾校 - 合肥八一驾校 | 冻干机(冷冻干燥机)_小型|实验型|食品真空冷冻干燥机-松源 | 液氮罐(生物液氮罐)百科-无锡爱思科 | 红立方品牌应急包/急救包加盟,小成本好项目代理_应急/消防/户外用品加盟_应急好项目加盟_新奇特项目招商 - 中红方宁(北京) 供应链有限公司 | 临沂招聘网_人才市场_招聘信息_求职招聘找工作请认准【马头商标】 | 贴板式电磁阀-不锈钢-气动上展式放料阀-上海弗雷西阀门有限公司 工业机械三维动画制作 环保设备原理三维演示动画 自动化装配产线三维动画制作公司-南京燃动数字 | 杭州翻译公司_驾照翻译_专业人工翻译-杭州以琳翻译有限公司官网 组织研磨机-高通量组织研磨仪-实验室多样品组织研磨机-东方天净 | 建筑消防设施检测系统检测箱-电梯**检测仪器箱-北京宇成伟业科技有限责任公司 | 泵阀展|阀门展|水泵展|流体机械展 -2025上海国际泵管阀展览会flowtech china | 泰国试管婴儿_泰国第三代试管婴儿_泰国试管婴儿费用/多少钱_孕泰来 | 高压无油空压机_无油水润滑空压机_水润滑无油螺杆空压机_无油空压机厂家-科普柯超滤(广东)节能科技有限公司 | 智成电子深圳tdk一级代理-提供TDK电容电感贴片蜂鸣器磁芯lambda电源代理经销,TDK代理商有哪些TDK一级代理商排名查询。-深圳tdk一级代理 | 阴离子_阳离子聚丙烯酰胺厂家_聚合氯化铝价格_水处理絮凝剂_巩义市江源净水材料有限公司 | 脱硫搅拌器厂家-淄博友胜不锈钢搅拌器厂家 | 网架支座@球铰支座@钢结构支座@成品支座厂家@万向滑动支座_桥兴工程橡胶有限公司 | Magnescale探规,Magnescale磁栅尺,Magnescale传感器,Magnescale测厚仪,Mitutoyo光栅尺,笔式位移传感器-苏州连达精密量仪有限公司 |