用Tkinter打造GUI開發工具(16)Tkinter、Ttk和Tix混合編程

用Tkinter打造GUI開發工具(16)Tkinter、Ttk和Tix混合編程
前面我們學習了Tkinter的Toplevel、Frame、Label、Button等開發的知識,如果入門,再通過找參考資料學習其他小部件的編程,並不困難。我們後面隨機抽取一些知識繼續來寫。
讀者如果有興趣,可以等我們書稿完成出版後,再購買學習。
Tkinter的基本開發知識,網上有很多。我們後面介紹2個Tkinter增強模塊Ttk和Tix。

1、Tkinter主題小部件Ttk

從Tkinter 8.5開始,Tkinter.ttk模塊可用。該模塊取代了許多原始Tkinter模塊。使用此ttk模塊可以獲得以下優勢:
平臺特定的外觀。在Tkinter 8.5之前的版本中,關於Tk應用程序的最常見的抱怨之一是它們不符合各種平臺的風格。
該ttk模塊允許你寫在一個通用的方法您的應用程序,但您的應用程序可以像在Windows下一個Windows應用程序一樣,在MacOS下MacOS的應用程序等等,程序上不需要做什麼修改。
每個可能的不同外觀由命名的 ttk 主題表示。例如, classic主題爲您提供了前面部分中描述的原始Tkinter小部件的外觀。
特定於狀態的窗口小部件行爲的簡化和概括。在基本的 Tkinter世界中,有很多窗口小部件選項可以根據各種條件指定窗口小部件的外觀或行爲方式。
例如,tk.Button窗口小部件有幾個不同的選項來控制前景(文本)顏色。
在activeforeground當光標在按鈕的顏色選項適用。
在disabledforeground當小部件被禁用的顏色使用。
foreground 當其他條件不適用時,窗口小部件將具有顏色。
ttk模塊將許多特殊情況分解爲簡單的兩部分系統:
每個小部件都有許多不同的狀態,每個狀態可以獨立於其他狀態打開或關閉。狀態的例子有:disabled,active,和focus。
您可以設置樣式圖,指定某些選項將設置爲特定值,具體取決於某些狀態或窗口小部件狀態的某種組合。
ttk帶有17個小部件,其中11個已經存在於Tkinter中:Button,Checkbutton,Entry,Frame,Label,LabelFrame,Menubutton,PanedWindow,Radiobutton,Scale和Scrollbar。 6個新的窗口小部件類是:Combobox,Notebook,Progressbar,Separator,Sizegrip和Treeview。 所有這些類都是Widget的子類。

導入ttk模塊的方法有很多種。我們建議使用這種形式的導入:

import tkinter as tk   #導入Tkinter
import tkinter.ttk as ttk   #導入Tkinter.ttk

Ttk是建立在Tkinter基礎上的,除了Tkinter的基本小部件外,我們還可以在程序中靈活使用Ttk所提供的小部件。
也就是說Ttk的部件完全可以適用在Tkinter的窗口和容器中,Tkinter.Tk()方法的實例對象root管理整個Tkinter和Ttk小部件的運行。

import tkinter as tk   #導入Tkinter
import tkinter.ttk as ttk   #導入Tkinter.ttk

root=tk.Tk()    # Tkinter.Tk()頂層調用

2、Tkinter擴展小部件Tix

首字母縮寫詞Tix代表Tk接口擴展。Tix對於不同的人來說是不同的東西。儘管標準Tk庫有許多有用的小部件,但它們還是不夠用。Tix庫提供了大多數標準Tk缺失的常用小部件:HList,ComboBox,Control(a.k.a.SpinBox)和各種可滾動小部件。 Tkinter擴展小部件Tix模塊提供一個額外的一套豐富的小部件。如果您是GUI應用程序程序員,也就是說,如果您通過構建圖形應用程序謀生,您會欣賞Tix作爲一個超級小部件庫:由其他小部件組成的小部件。Tix小部件不僅可以幫助您加速應用程序的開發,還可以幫助您完成設計過程。由於標準的Tk小部件過於原始,藉助Tix超級小部件,您可以設計出更加結構化和連貫的應用程序。tkinter.tix還包括許多通常適用於各種應用程序的小部件NoteBook、FileEntry、 PanedWindow等,其中小部件有40多個。
使用所有這些新的小部件,您可以在應用程序中引入新的交互技術,創建更有用和更直觀的用戶界面。您可以通過選擇最合適的小部件來設計應用程序,以滿足應用程序和用戶的特殊需求。
Tix已在Python 3中重命名爲tkinter.tix。
但是在Tix模塊中,Tix模塊中的類將Tkinter模塊中的類子類化。因此Tix是建立在Tkinter模塊基礎上。前者導入後者,因此要將Tix與Tkinter一起使用,您只需導入一個模塊。 一般情況下,您可以只導入Tix,並用Tix.Tk替換Tkinter.Tk的頂層調用。Tix.Tk()負責管理Tix和Tkinter小部件的運行。因此需要用Tix.Tk()方法的實例對象root管理整個Tix和Tkinter小部件的運行。
下面是建議混合開發導入模塊的代碼。

import tkinter as tk   #導入Tkinter
import tkinter.ttk as ttk   #導入Tkinter.ttk
import tkinter.tix as tix   #導入Tkinter.tix
from  tkinter.constants  import  *  #導入Tkinter常量 

root=tix.Tk()   # Tkinter.tix.Tk()頂層調用

(1)通過上面方式導入模塊,我們的程序中同時可以使用Tkinter(別名tk)小部件,Ttk(別名ttk)小部件、Tix(別名tix)小部件等。但是一些高級方法被tix替代了,或增強了。
(2)同時我們在程序中可以使用Tkinte常量“SUNKEN”和“tk.SUNKEN”,“tix.SUNKEN”都可用。
(3)我們的tk和ttk小部件,增加了tix的新方法,例如tix新的表格佈局Form方法。
下面我們看一個混合編程的演示代碼。

# -*- coding: utf-8 -*-
import  tkinter  as  tk   #導入Tkinter
import  tkinter.ttk  as  ttk   #導入Tkinter.ttk
import  tkinter.tix  as  tix   #導入Tkinter.tix
from  tkinter.constants  import  *   #導入Tkinte常量,W和tk.W,tix.W都可用。

root = tix.Tk()   #創建tix.Tk()主窗口

width=300  #把窗口寬度(單位:像素)300賦值給變量width
height=200  #把窗口高度(單位:像素)300賦值給變量height
x,y=150,250  #給屏幕座標(x,y)賦值(100,200)
root.geometry('{}x{}+{}+{}'.format(width,height, x, y))  #改變窗口位置和大小
root.title("Tix的Form佈局演示")

la=tk.Label(root, text='tk_la_form',relief=SUNKEN, bd=1)  #創建tk.Label
la.form(top=50, left=50,right=None,bottom=None)   #用form方法顯示

lb=ttk.Label(root, text='ttk_lb_form')  #創建ttk.Label
lb.form(top=100, left=50,right=None,bottom=None)   #用form方法顯示

lc=tix.Label(root, text='tix_lc_form',relief=tk.SUNKEN, bd=1)  #創建tix.Label
lc.form(top=150,left=50)    #用form方法顯示

ld=tix.Label(root, text='tix_ld_place',relief=tix.SUNKEN, bd=1)   #創建tk.Label
ld.place(x=150,y=100)   #用place方法顯示

root.mainloop()   #開啓tk主循環

程序分別建立tk.Label,ttk.Label和tix.Label,用新的表格佈局Form方法,另外tix.Label使用舊佈局Place方法,程序運行結果如下圖。
在這裏插入圖片描述
如合作請聯繫.
編寫:獨狼荷蒲
QQ:2775205
電話微信:18578755056
Python Tkinter 開發羣:524949939
博客:https://me.csdn.net/hepu8

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章