tkinter frame背景色_Tkinter教程-基础组件(三)
本節(jié)介紹Spinbox組件、滑動條組件、下拉列表組件使用等!
tkinter組件
Spinbox組件
Spinbox組件是一個帶有兩個小箭頭的文本框,用戶既可以通過兩個小箭頭上下調(diào)整該組件內(nèi)的值,也可以直接在文本框內(nèi)輸入內(nèi)容作為該組件的值
- 使用Spinbox組件,可通過 from_、to、increment 參數(shù)指定取值內(nèi)容
- 可通過 values 參數(shù)指定取值內(nèi)容,參數(shù)值可以是 list 或 tuple
- 可通過 textvariable 參數(shù)實現(xiàn)輸入數(shù)據(jù)與變量雙向綁定
- 可通過 command 參數(shù)指定事件處理函數(shù)或方法,即當(dāng)單擊 Spinbox 的向上、向下箭頭時,程序就會觸發(fā) command 選項指定的事件處理函數(shù)或方法
Spinbox 組件使用示例:
# -*- coding:utf-8 -*-from tkinter import *# 導(dǎo)入ttkfrom tkinter import ttkclass App(object): def __init__(self, mw): self.mw = mw self.initWidgets() def initWidgets(self): ttk.Label(self.mw, text='數(shù)值選擇,從20到100').pack() sb1 = Spinbox(self.mw, from_ = 20, to = 100, increment = 5) sb1.pack(fill=X, expand=YES) ttk.Label(self.mw, text='指定values').pack() # 內(nèi)容選擇 # 通過command綁定事件處理方法 self.sb2 = Spinbox(self.mw, values=('Python', 'Java', 'Golang', 'JavaScript'), command = self.switch1) self.sb2.pack(fill=X, expand=YES) ttk.Label(self.mw, text='綁定變量').pack() self.intVar = IntVar() # 通過指定values選項創(chuàng)建Spinbox,并為之綁定變量 self.sb3 = Spinbox(self.mw, values=list(range(20, 100, 4)), textvariable = self.intVar, # 綁定變量 command = self.switch2) self.sb3.pack(fill=X, expand=YES) # 設(shè)置Spinbox的值 self.intVar.set(33) def switch1(self): print(self.sb2.get()) def switch2(self): print(self.sb3.get())if __name__ == "__main__": mw = Tk() mw.title("Spinbox組件") # 改變窗口圖標(biāo) mw.iconbitmap('leina.ico') App(mw) mw.mainloop()滑動條組件
Scale是滑動條組件,可以為該滑動條設(shè)置最小值和最大值,也可以設(shè)置滑動條每次調(diào)節(jié)的步長。 支持如下選項:
- from:設(shè)置該 Scale 的最小值。
- to:設(shè)置該 Scale 的最大值。
- resolution:設(shè)置該 Scale 滑動時的步長。
- label:為 Scale 組件設(shè)置標(biāo)簽內(nèi)容。
- length:設(shè)置軌道的長度。
- width:設(shè)置軌道的寬度。
- troughcolor:設(shè)置軌道的背景色。
- sliderlength:設(shè)置軌道的長度。
- sliderrelief:設(shè)置滑塊的立體樣式。
- showvalue:設(shè)置是否顯示當(dāng)前值。
- orient:設(shè)置方向。該選項支持 VERTICAL 和 HORIZONTAL 兩個值。
- digits:設(shè)置有效數(shù)字至少要有幾位。
- variable:用于與變量進(jìn)行綁定。
- command:用于為該 Scale 組件綁定事件處理,函數(shù)或方法。
如果使用 ttk.Scale 組件,則更接近操作系統(tǒng)本地的效果,但允許定制的選項少。
# -*- coding:utf-8 -*-from tkinter import ttk,Tk,Scale,SUNKEN,YES,HORIZONTAL,Frame,X,LEFT,Label,IntVar,Radiobutton,VERTICALclass App(object): def __init__(self, mw): self.mw = mw self.initWidgets() def initWidgets(self): self.scale = Scale(self.mw, from_ = -100, # 設(shè)置最大值 to = 100, # 設(shè)置最小值 resolution = 5, # 設(shè)置步長 label = '滑動條示例', # 設(shè)置標(biāo)簽內(nèi)容 length = 400, # 設(shè)置軌道的長度 width = 30, # 設(shè)置軌道的寬度 troughcolor='lightblue', # 設(shè)置軌道的背景色 sliderlength=20, # 設(shè)置滑塊的長度 sliderrelief=SUNKEN, # 設(shè)置滑塊的立體樣式 showvalue=YES, # 設(shè)置顯示當(dāng)前值 orient = HORIZONTAL #設(shè)置水平方向 ) self.scale.pack() # 創(chuàng)建一個Frame作為容器 f = Frame(self.mw) f.pack(fill=X, expand=YES, padx=10) Label(f, text='是否顯示值:').pack(side=LEFT) i = 0 self.showVar = IntVar() self.showVar.set(1) # 創(chuàng)建兩個Radiobutton控制Scale是否顯示值 for s in ('不顯示', '顯示'): Radiobutton(f, text=s, value=i, variable=self.showVar, command=self.switch_show).pack(side=LEFT) i += 1 # 創(chuàng)建一個Frame作為容器 f = Frame(self.mw) f.pack(fill=X, expand=YES, padx=10) Label(f, text='方向:').pack(side=LEFT) i = 0 self.orientVar = IntVar() self.orientVar.set(0) # 創(chuàng)建兩個Radiobutton控制Scale的方向 for s in ('水平', '垂直'): Radiobutton(f, text=s, value=i,variable=self.orientVar, command=self.switch_orient).pack(side=LEFT) i += 1 def switch_show(self): self.scale['showvalue'] = self.showVar.get() def switch_orient(self): # 根據(jù)單選框的選擇設(shè)置orient選項的值 self.scale['orient'] = VERTICAL if self.orientVar.get() else HORIZONTALif __name__ == "__main__": mw = Tk() mw.title("滑動條組件使用") mw.iconbitmap('leina.ico') App(mw) mw.mainloop()Scale 組件支持 variable 進(jìn)行變量綁定,也支持使用 command 選項綁定事件處理函數(shù)或方法,這樣每當(dāng)用戶拖動滑動條上的滑塊時,都會觸發(fā) command 綁定的事件處理方法,例如如下程序:
# -*- coding:utf-8 -*-from tkinter import ttk,DoubleVar,Scale,HORIZONTAL,Tkclass App(object): def __init__(self, mw): self.mw = mw self.initWidgets() def initWidgets(self): # 定義變量 self.doubleVar = DoubleVar() self.scale = Scale(self.mw, from_ = -100, # 設(shè)置最大值 to = 100, # 設(shè)置最小值 resolution = 5, # 設(shè)置步長 label = '滑動條組件', # 設(shè)置標(biāo)簽內(nèi)容 length = 400, # 設(shè)置軌道的長度 width = 30, # 設(shè)置軌道的寬度 orient = HORIZONTAL, #設(shè)置水平方向 digits = 10, # 設(shè)置十位有效數(shù)字 command = self.change, # 綁定事件處理函數(shù) variable = self.doubleVar # 綁定變量 ) self.scale.pack() # 設(shè)置Scale的當(dāng)前值 self.scale.set(20) def change(self, value): print(value, self.scale.get(), self.doubleVar.get())if __name__ == "__main__": mw = Tk() mw.title("滑動條組件") mw.iconbitmap('leina.ico') App(mw) mw.mainloop()通過三種方式來獲取 Scale 組件的值:
- 事件處理方法的參數(shù)來獲取
- Scale 組件提供的 get() 方法來獲取
- Scale 組件綁定的變量來獲取
ttk.LabeledScale 是平臺化的滑動條,它的設(shè)置參數(shù)較少,只能設(shè)置 from、to 和 compound 等有限的幾個選項,而且只有水平滑動條(沒有垂直的) 而且 compound 選項控制滑動條的數(shù)值標(biāo)簽是顯示在滑動條的上方,還是滑動條的下方
# -*- coding:utf-8 -*-from tkinter import ttk,Tk,BOTTOM,YES,Xclass App(object): def __init__(self, mw): self.mw = mw self.initWidgets() def initWidgets(self): self.scale = ttk.LabeledScale(self.mw, from_ = -100, # 設(shè)置最大值 to = 100, # 設(shè)置最小值 compound = BOTTOM # 設(shè)置顯示數(shù)值的Label在下方 ) self.scale.value = -20 self.scale.pack(fill=X, expand=YES)if __name__ == "__main__": mw = Tk() mw.title("LabeledScale組件") mw.iconbitmap('leina.ico') App(mw) mw.mainloop()下拉列表組件
Combobox 是下拉列表組件,用法更加簡單
- values 設(shè)置多個選項
- state 選項支持‘readonly’狀態(tài),該狀態(tài)代表 Combobox 的文本框不允許編輯,只能通過下拉列表框的列表項來改變
- textvariable 變量綁定
- postcommand 選項指定事件處理函數(shù),當(dāng)用單擊 Combobox 的下拉箭頭時,會觸發(fā) postcomrnand 選項指定的事件處理函數(shù)
總結(jié)
以上是生活随笔為你收集整理的tkinter frame背景色_Tkinter教程-基础组件(三)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 前端页面传过来的值怎么防止篡改
- 下一篇: python mysql 遍历_Pyth