tkinter基本概念
GUI: Graphical User Interface 圖形使用者接口
from tkinter import *
列出tkinter版本
import tkinter
print(tkinter.TkVersion)
建立視窗
通常将使用Tk( )方法建立的視窗稱為根視窗,之後可以在此根視窗中建立許多控件,也可以在此根視窗中建立上層視窗。
建立空白視窗,視窗預設名稱是tk
from tkinter import *
root = Tk()
root.mainloop()
視窗大小是預設大小,當視窗出現後,可以拖曳移動視窗或更改視窗大小
在GUI程式設計中,有時候也将上述所建立的視窗(window)稱為容器(container)。
視窗屬性的設定
與視窗相關的方法
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICN4ETMfdHLkVGepZ2XtxSZ6l2clJ3LcBnYldHL0FWby9mZvwVPrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdsAjMfd3bkFGazxCMx8VesATMfhHLlN3XnxCMz8FdsYkRGZkRG9lcvx2bjxSa2EWNhJTW1AlUxEFeVRUUfRHelRHL2EzXlpXazxyayFWbyVGdhd3LcV2Zh1Wa9M3clN2byBXLzN3btg3PwJWZ35SN0kzN5MWO1gTZ0AzYxI2NyYzX4IDNxATMxEzLcVDMyIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjLyM3Lc9CX6MHc0RHaiojIsJye.webp)
設定視窗标題為MyWindow,同時設定寬是300,高是160
from tkinter import *
root = Tk()
root.title("MyWindow")
root.geometry("300x160")
root.configure(bg="yellow")
root.mainloop()
除了可以使用名稱直接設定色彩,還可以使用十六進制方式設定色彩RGB,其中每個色彩用兩個十六進制數字表示。
使用mystar.ico更改系統預設的圖示,同時使用另一種更改背景顔色的方法。
from tkinter import *
root = Tk()
root.configure(bg="#00ff00")
root.iconbitmap("mystar.ico")
root.mainloop()
視窗位置的設定
geometry( )方法除了可以設定視窗的大小,也可以設定視窗的位置,此時它的文法格式如下。
geometry(widthxheight+x+y)
- widthxheight說明視窗的寬和高,width與height用x分隔
-
“+x”表示x是視窗左邊距離螢幕左邊的距離
如果是“-x”,則表示x是視窗右邊距離螢幕右邊的距離
-
“+y”表示y是視窗上邊距離螢幕上邊的距離
如果是“-y”則表示y是視窗下邊距離螢幕下邊的距離
獲得螢幕的寬度和高度
螢幕 不是 視窗
root.winfo_screenwidth()
root.winfo_screenheight()
設計視窗時将此視窗放在螢幕中央
from tkinter import *
root = Tk()
screenWidth = root.winfo_screenwidth()
screenHeight = root.winfo_screenheight()
w = 300
h = 160
x = (screenWidth -w)/2
y = (screenHeight-h)/2
root.geometry("%dx%d+%d+%d"%(w,h,x,y))
root.mainloop()
tkinter的Widget
Widget可以翻譯為控件或元件或部件。
視窗建立完成後,下一步是在視窗内建立控件,将這些控件統稱為Widget。
- Button(按鈕)
- Canvas(畫布)
- Checkbutton(多選按鈕)
- Entry(文本框)
- Frame(架構)
- Label(标簽)
- LabelFrame(标簽架構)
- Listbox(清單框)
- Menu(菜單)
- MenuButton(菜單按鈕)
- Message(消息)
- OptionMenu(下拉式菜單)
- PanedWindow(面闆)
- Radiobutton(單選按鈕)
- Scale(尺度)
- Scrollbar(滾動條)
- Spinbox(可微調輸入控件)
- Text(文字區域)
- Toplevel(上層視窗)
Widget的共同屬性
- Dimensions:大小
- Colors:顔色
- Fonts:字形
- Anchor:錨(位置參考點)
- Relief styles:屬性邊框
- Bitmaps:顯示位圖
- Cursors:滑鼠外形
Widget的共同方法
- Configuration
-
config(option=value)
Widget屬性可以在建立時設定,也可以在程式執行時使用config( )重新設定
-
cget("option")
取得option參數值
-
keys( )
可以用此方法獲得所有該Widget的參數
- Event Processing
-
mainloop( )
讓程式繼續執行,同時進入等待與處理視窗事件
-
quit( )
Python Shell視窗結束,但是所建視窗繼續執行
-
update( )
更新視窗畫面
- Event callbacks
-
bind(event,callback)
事件綁定
-
unbind(event)
解除綁定
- Alarm handlers
-
after(time,callback)
間隔指定時間後調用callback( )方法
加強版的tkinter子產品
tkinter在後來也推出了加強版的子產品,稱為tkinter.ttk,有時簡稱ttk
ttk子產品新增的Widget
- Combobox
- Notebook
- Progressbar
- Separator
- Sizegrip 可以拖曳最上層視窗右下方更改最上層視窗的大小。
- Treeview
導入子產品
from tkinter import ttk
如果使用下列方式導入ttk,可以覆寫原先tkinter的控件:
from tkinter import *
from tkiner.ttk import *
使用ttk可以有更好的外觀,而且也可以跨平台使用,不過并沒有100%相容
例如,fg、bg參數或一些外觀相關的參數tk和ttk是不相同。
ttk使用的是ttk.Style類别。