Python 升級(jí)之路( Lv20 ) GUI 圖形界面編程之高級(jí)組件
大家好, 我是了不起, 歡迎收看我的冒險(xiǎn)之旅!
今天我們將深入學(xué)習(xí)GUI圖形界面編程tkinter, 了解高級(jí)組件的使用方式。
tkinter高級(jí)組件
在GBK外圍住所中, 奧菲利亞向我們解釋到了. 最初整個(gè)地區(qū)都相安無(wú)事, 但是自從某天馬塞爾大叔在天帷禁地發(fā)狂之后, 像瘟疫一般的病毒便散播開(kāi)來(lái). 到最后, 幾乎除了現(xiàn)任教主奧菲利亞, 他人無(wú)人幸免. 于是, 在奧菲利亞的再次請(qǐng)求下, 了不起慎重思考后決定前往天帷禁地查明原因. 導(dǎo)師GSC嗅到了一絲不安的情況, 打算現(xiàn)在阿拉德尋找一些朋友來(lái)幫忙. 于是了不起當(dāng)下就和GSC分道揚(yáng)鑣...
OptionMenu 選擇項(xiàng)
OptionMenu(選擇項(xiàng), 類似前端多選框)用來(lái)做多選一,選中的項(xiàng)在頂部顯示。顯示效果如下:
實(shí)操代碼:
from tkinter import Tk, StringVar, OptionMenu, Button
root = Tk()
root.geometry("200x100")
v = StringVar(root)
v.set("首選項(xiàng)")
"""下拉列表選項(xiàng)框"""
om = OptionMenu(root, v, "第二選項(xiàng)", "第三選項(xiàng)", "第四選項(xiàng)")
om["width"] = 10
om.pack()
def test1():
print("您的選擇是:", v.get())
v.set("新設(shè)置的首選項(xiàng)") # 直接修改了 optionmenu 中選中的值
Button(root, text="確定", command=test1).pack()
root.mainloop()
結(jié)果展示:
Scale 移動(dòng)滑塊
Scale(移動(dòng)滑塊)用于在指定的數(shù)值區(qū)間,通過(guò)滑塊的移動(dòng)來(lái)選擇值。
實(shí)操代碼:
"""
scale 滑塊的使用測(cè)試
【示例】使用 Scale(移動(dòng)滑塊)控制字體大小變化
"""
from tkinter import *
root = Tk()
root.geometry("400x150")
def test1(value):
print("滑塊的值:", value)
newFont = ("宋體", value)
a.config(font=newFont) # 這里將滑塊的值, 附入標(biāo)簽中
s1 = Scale(root, from_=10, to=50, length=200, tickinterval=5, orient=HORIZONTAL, command=test1)
s1.pack()
a = Label(root, text="測(cè)試滑塊", width=10, height=1, bg="black", fg="white")
a.pack()
root.mainloop()
結(jié)果展示:
顏色選擇框
實(shí)操代碼:
from tkinter import Tk, StringVar, OptionMenu, Button
from tkinter.colorchooser import askcolor
print("======================================")
root = Tk()
root.geometry("400x150")
def test1():
s1 = askcolor(color="red", title="選擇背景色")
print(s1) # s1 的值是:((0.0, 0.0, 255.99609375), '#0000ff')
root.config(bg=s1[1]) # 這里, 將父組件的顏色設(shè)置成button按鈕點(diǎn)擊后顏色選擇框的值,
Button(root, text="選擇背景色", command=test1).pack()
root.mainloop()
結(jié)果展示:
文件對(duì)話框
文件對(duì)話框幫助我們實(shí)現(xiàn)可視化的操作目錄、操作文件. 將文件、目錄的信息傳入到程序中。
文件對(duì)話框包含如下一些常用函數(shù):
命名參數(shù) options 的常見(jiàn)值如下:
實(shí)操代碼——文件對(duì)話框基本用法:
"""文件對(duì)話框獲取文件"""
from tkinter import *
from tkinter.filedialog import *
root = Tk()
root.geometry("400x100")
def test1():
f = askopenfilename(title="上傳文件", initialdir="f:/file", filetypes=[("視頻文件", ".mp4")]) # askopenfilename(**options) 返回打開(kāi)的文件名
# print(f)
show["text"] = f # 這里label將顯示選擇的視頻文件名稱
Button(root, text="選擇編輯的視頻文件", command=test1).pack()
show = Label(root, width=40, height=3, bg="green")
show.pack()
root.mainloop()
結(jié)果展示:
簡(jiǎn)單輸入對(duì)話框
simpledialog(簡(jiǎn)單對(duì)話框)包含如下常用函數(shù):
實(shí)操代碼:
"""簡(jiǎn)單對(duì)話框"""
from tkinter.simpledialog import *
root = Tk()
root.geometry("400x100")
def test1():
a = askinteger(title="輸入年齡", prompt="請(qǐng)輸入年齡 ", initialvalue=18, minvalue=1,
maxvalue=150) # askstring、askfloat 框使用方式一樣
show["text"] = a
Button(root, text="你有多大了? 請(qǐng)點(diǎn)擊后輸入", command=test1).pack()
show = Label(root, width=40, height=3, bg="green")
show.pack()
root.mainloop()
結(jié)果展示:
通用消息框
messagebox(通用消息框)用于和用戶簡(jiǎn)單的交互,用戶點(diǎn)擊確定、取消。
如下列出了 messagebox 的常見(jiàn)函數(shù):
函數(shù) | 說(shuō)明 |
| OK/Cancel 對(duì)話框 |
| Yes/No 問(wèn)題對(duì)話框 |
| Retry/Cancel問(wèn)題對(duì)話框 |
| 錯(cuò)誤消息對(duì)話框 |
| 消息框 |
| 警告消息框 |
實(shí)操代碼:
from tkinter import *
from tkinter.messagebox import *
root = Tk()
root.geometry("400x100")
a1 = showinfo(title="測(cè)試通用消息框", message="點(diǎn)擊出現(xiàn)通用消息框")
print(a1)
root.mainloop()
結(jié)果展示:
ttk 子模塊控件
前面學(xué)的組件是 tkinter 模塊下的組件,整體界面風(fēng)格較老舊。為了彌補(bǔ)這點(diǎn)不足, 推出了 ttk 組件ttk 組件更加美觀、功能更加強(qiáng)大, 新增了 LabeledScale(帶標(biāo)簽的 Scale)、Notebook(多文檔窗口)、Progressbar(進(jìn)度條)、Treeview(樹(shù))等組件. 使用 ttk 組件與使用普通的 Tkinter 組件并沒(méi)有多大的區(qū)別,只要導(dǎo)入 ttk 模塊即可
注意事項(xiàng):
- ttk 子模塊的官方文檔: https://docs.python.org/3.7/library/tkinter.ttk.html
- 如果項(xiàng)目確實(shí)需要用到復(fù)雜的界面,推薦大家使用 wxpython 或者 pyQt.