Tkinter 1. 基本介绍
介紹
Tkinter 是 Python 的標準 GUI 庫。Python 使用 Tkinter 可以快速的創建 GUI 應用程序。由于 Tkinter 是內置到 Python 的安裝包中,所以只要安裝好 Python 之后就能使用了,無需另外安裝。Tkinter中的ttk對一些控件進行了美化,說是美化其實還是一樣丑,所以不會去介紹相同的,只會介紹一些新增的控件。
控件種類
tkinter 控件種類
tkinter.ttk 控件種類(除了上面那些,還有下面這些新增的控件)
基本框架
import tkinter as tkroot = tk.Tk() # 主窗口對象# 注意,下面的x不是乘號是小寫字母x root.geometry('600x300+100+100') # 設置窗口的大小,以及距離屏幕左上角x軸,y軸的距離。root.title('test app') # 設置窗口的標題###### 添加控件,設置控件屬性,綁定回調函數root.mainloop()添加控件的基本流程
實例
root = tk.Tk() # 主窗口 root.geometry('600x400+200+200') tk.Label(root, # 第一個參數就是master,表明要把這個控件放在master里面。textvariable=mystr,width=20, # 設置屬性height=3,bg='#e33e31').pack() # pack布局該控件在主體中的位置。 root.mainloop()控件與變量的關系
通過一些特定參數,某些組件(如文本輸入組件)的當前設置可直接與應用程序的變量關聯。這些參數包括 variable 、 textvariable 、 onvalue 、 offvalue 、 value。這種關聯是雙向的:只要這些變量因任何原因發生變化,其關聯的部件就會更新以反映新的參數值。
現已經定義了很多有用的 Variable 子類: StringVar 、 IntVar 、DoubleVar 和 BooleanVar。
- 調用 get() 方法可以讀取變量的當前值;
- 調用 set() 方法則可改變變量值。
實例
簡單的說,像textvariable這樣的參數,它和變量mystr是雙向綁定的,所以對mystr設置了值,也相當于對textvariable設置了值,從mystr獲得的值,也相當于從textvariable獲得值。
import tkinter as tkroot = tk.Tk() root.geometry('600x400') mystr = tk.StringVar() mystr.set('one')lbl = tk.Label(root,textvariable=mystr) lbl.pack()def change():v = mystr.get()if v == 'one':mystr.set('two')elif v == 'two':mystr.set('one')btn = tk.Button(root,text='Change',command=change) btn.pack()root.mainloop()控件通用參數取值
控件中有很多參數功能都是一樣的,為了化繁為簡,把一些通用參數在這邊列出來,后面就只提每個控件比較獨特的參數。
顏色相關的
- background/bg 背景顏色
- foreground/fg 前景色,字體顏色
- activebackground 激活狀態的背景色(比如:點擊時)
- activeforeground 激活狀態的前景色
- highlightbackground 框架frame沒有獲得焦點時,邊框的顏色
- highlightcolor 框架frame獲得焦點時,邊框的顏色
- highlightthickness 高亮邊框的寬度,默認是0,所以當你設置了上面兩項,而沒有任何變化,說明邊框寬度0,你看不到,設置一個整數,比如5,就可以看得到了。(使用tab鍵盤切換控件時,控件外圍提示框的寬度,如下圖黑色邊框)
- disabledforeground 控件state=disabled 時設置字體顏色
- disabledbackground 控件state=disabled 時設置背景色
bd/borderwidth
邊框的寬度.
height / width
控件的高、寬
takefocus
用戶是否可以使用tab鍵移動到這個部件,True or False
anchor 錨定點
"n"?、"ne"?、"e"?、"se"?、"s"?、"sw"?、"w"?、"nw"?和?"center"
cursor 當光標進入控件時的樣式
X_cursor arrow based_arrow_down based_arrow_up boat bogosity bottom_left_corner bottom_right_corner bottom_side bottom_tee box_spiral center_ptr circle clock coffee_mug cross cross_reverse crosshair diamond_cross dot dotbox double_arrow draft_large draft_small draped_box exchange fleur gobbler gumby hand1 hand2 heart icon iron_cross left_ptr left_side left_tee leftbutton ll_angle lr_angle man middlebutton mouse none pencil pirate plus question_arrow right_ptr right_side right_tee rightbutton rtl_logo sailboat sb_down_arrow sb_h_double_arrow sb_left_arrow sb_right_arrow sb_up_arrow sb_v_double_arrow shuttle sizing spider spraycan star target tcross top_left_arrow top_left_corner top_right_corner top_side top_tee trek ul_angle umbrella ur_angle watch xtermbitmap
內置已命名的位圖有八個:'error'、?'gray25'?、'gray50'?、'hourglass'、?'info'?、'questhead'?、'question'?、'warning'?。若要指定位圖的文件名,請給出完整路徑,前面加一個?@,比如?"@/xxx/xxx.bit"。
image
指定要在小部件中顯示的圖像,使用 img = tkinter.PhotoImage(file='xxx.gif'),加載圖片
font
Tk 采用一串名稱的格式表示字體,例如? font=("Microsoft Yahei",20,'italic','bold') 。正數的字體大小以點為單位,負數的大小以像素為單位。
justify對齊方式
"left"?、?"center"?、?"right"?和?"fill"?。
distance
屏幕距離可以用像素或絕對距離來指定。像素是數字,絕對距離是字符串,后面的字符表示單位:c?是厘米,i?是英寸,m?是毫米,p?則表示打印機的點數。例如,3.5 英寸可表示為?"3.5i"。
relief
決定了組件的邊框樣式。 合法值包括:"raised"、?"sunken"?、"flat"?、"groove"?和?"ridge"?。
scrollcommand
有xscrollcommand 和 yscrollcommand 分別是給控件設置水平滾動條和垂直滾動條,使用scrollbar.set設置滾動條
wrap
一個單詞還沒有輸入完就要換行了。如果設置成char沒輸入完的部分會另起一行,如果設置成word就會整個單詞跳到下一行。(只能是以下值之一:"none"?、?"char"?、?"word"。)
wraplength
設置每行都最大長度
state
控件的狀態: active, disabled, or normal
padx,pady
在控件里面設置代表添加內邊距
在pack()、grid()里面設置代表添加外邊距
compound
圖片和文字的排布方式;none, bottom, top, left, right, center,如果選擇top,圖片就會在文字上方。
underline
下劃線,underline=0代表在第一個字符下添加下劃線。
控件的布局方式
place()
在一個坐標位置上放置控件
參數:
x
y
anchor (錨定點: n, ne, e, se, s, sw, w, nw, or center)
grid()
用行列的形式來布局控件
參數
row 第幾行
rowspan 跨多少行
column 第幾列
columnspan 跨多少列
ipadx - 水平內邊距
ipady - 垂直內邊距
padx - 水平外邊距
pady - 垂直外邊距
sticky(在單元格里面的位置:‘n’, ‘s’, ‘w’, ‘e’, )
pack()
參數
anchor (錨定點: n, ne, e, se, s, sw, w, nw, or center)expand=bool - 是否隨著父控件拉伸而拉伸fill=NONE or X (填充滿水平方向)or Y (填充滿垂直方向)or BOTH(填充滿水平和垂直方向)ipadx - 水平內邊距ipady - 垂直內邊距padx - 水平外邊距 pady - 垂直外邊距side=TOP or BOTTOM or LEFT or RIGHT - 放置的位置Toplevel
tkinter中的窗口是一個隱含的對象,最低一層實際上是Toplevel,構建窗口就是實例化一個Toplevel控件。
Toplevel可設置的
| title(str) | 設置窗口的標題 |
| iconbitmap(ico_path) | 設置窗口的圖標,不知道為什么window可以設置,Mac不行,推薦ico x32的尺寸 |
| geometry(str) | 設置窗口的大小,以及距離左上角的x軸,y軸距離 |
| maxsize(width=None, height=None) | 設置窗口的最大尺寸 |
| minsize(width=None, height=None) | 設置窗口的最小尺寸 |
| resizable(width=None, height=None) | 設置窗口的可拉伸尺寸,當都等于0,表示禁止拉伸 |
| attributes(‘-alpha’,1.0) | 設置窗口的透明度,取值再0-1之間,還有其他可設置,但是window和Mac之間不通用,不說了。 |
| configure(屬性) | 配置窗口的一些屬性,下面表格中列出 |
| mainloop() | 主循環,執行則相當于啟動窗口,必要 |
configure可設置的屬性
| bd/borderwidth | 邊框寬,默認是0,當你設置了邊框寬,如果relief是flat,你是看不出變化的 |
| menu | 設置菜單Menu對象 |
| relief | 邊框樣式,可選的FLAT,SUNKEN,RAISED,GROOVE,RIDGE默認為FLAT |
| background/bg | 背景色,'#1BA135'這樣的RGB |
| colormap | 設置需要是Colormap的實例, |
| container | 設置需要是Container的實例 |
| cursor | 鼠標光標在其中的位置 |
| height | 高度 |
| width | 寬度 |
| highlightbackground | 要高亮的背景色 |
| highlightcolor | 要高亮的顏色 |
| highlightthickness | 高亮的寬度 |
| padx | 水平padding 內邊距 |
| pady | 垂直padding 內邊距 |
| takefocus | 指示用戶可以使用tab鍵移動到這個部件 |
relief效果圖
實例
import tkinter as tk import sys import osui_dir = os.path.dirname(os.path.realpath(sys.argv[0])) ico_path = os.path.join(ui_dir,'ico/logox32.ico')root = tk.Tk()# 注意,下面的x不是乘號是小寫字母x root.geometry('600x300+100+100') # 設置窗口的大小,以及距離屏幕左上角x軸,y軸的距離。 root.iconbitmap(ico_path) root.maxsize(width=600,height=300) root.minsize(width=500,height=200) root.configure(borderwidth=50,bg='#1BA135',relief='sunken')root.title('test app') # 設置窗口的標題root.mainloop()總結
以上是生活随笔為你收集整理的Tkinter 1. 基本介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 5万字 TypeScript入门系列(第
- 下一篇: RHS 和 LHS