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