用Tkinter打造GUI開發工具(18)tix.ButtonBox按鈕框小部件
由於Tix的很多小部件與Tkinter小部件用法類似,我們介紹一些Tix特有的小部件。
tix.ButtonBox小部件創建按鈕框,可在按鈕框中添加一些按鈕,諸如通常用的“Ok”和“ Cancel”等。
按鈕框中添加一些按鈕,所有按鈕的寬度值相同。按鈕提示文本、下劃線、命令和寬度選項都是tix.Button按鈕部件的標準選項。
使用tix.ButtonBox小部件的構造語法如下:
btnbox = tix.ButtonBox (master, orientation=HORIZONTAL)
參數master 這代表了父部件。
參數orientation是這個部件排列按鈕的方向,默認水平HORIZONTAL。
tix.ButtonBox部件除了上面的屬性外,還有一些方法可以使用。
1)增加按鈕。
btnbox .add (name, option=value, ...)
參數name是按鈕的名稱。
參數option是Tix.Button按鈕部件的一些屬性參數。例如屬性參數text, underline, width, command等等。
2)調用按鈕的command回調程序。
btnbox . invoke (name)
參數name是tix.ButtonBox部件添加的按鈕名稱。
調用名字爲name按鈕的command回調,並返回該函數返回的內容。類似程序模擬按鈕動作。如果按鈕被禁用或沒有回調,則無效。
tix.ButtonBox不像tk.messagebox中一些小部件那樣會返回參數值,只能使用cammand參數寫回調函數。不過使用Tix,並不會影響我們使用Tkinter的原始小部件使用。
下面看一個tix.ButtonBox部件演示程序。點[Quit]按鈕時,會彈出一個tk.messagebox對話框,再確認一次退出操作。
# -*- coding: utf-8 -*-
# https://blog.csdn.net/hepu8
# 獨狼荷蒲 QQ:2775205
import tkinter as tk #導入Tkinter
from tkinter import messagebox, filedialog, simpledialog, colorchooser
import tkinter.tix as Tix #導入Tkinter.tix
#移動窗口到屏幕座標x,y
def setPlace(window,x, y,w=0,h=0):
if (w==0 or h==0):
w = window.winfo_width() #獲取窗口寬度(單位:像素)
h = window.winfo_height() #獲取窗口高度(單位:像素)
window.geometry('{}x{}+{}+{}'.format(w, h, x, y))
def RunSample(w):
top = Tix.Label(w, padx=20, pady=10, bd=1, relief=Tix.RAISED,
anchor=Tix.CENTER, text='這個對話框演示tixButtonBox的使用,\n默認orientation=HORIZONTAL')
box = Tix.ButtonBox(w)
def quit():
ans=messagebox.askyesno('Tk.messagebox提示', '要程序結束嗎?') #確定/取消,返回值True/False
if ans==True:
w.destroy()
box.add('ok', text='OK', underline=0, width=5,
command=lambda w=w: w.destroy())
box.add('quit', text='Quit', underline=0, width=5,
command=quit)
box.pack(side=Tix.BOTTOM, fill=Tix.X)
top.pack(side=Tix.TOP, fill=Tix.BOTH, expand=1)
def RunSample2(w):
top = Tix.Label(w, padx=20, pady=10, bd=1, relief=Tix.RAISED,
anchor=Tix.CENTER, text='這個對話框演示tixButtonBox的使用,\n使用orientation=VERTICAL')
box = Tix.ButtonBox(w, orientation=Tix.VERTICAL)
box.add('ok', text='確定', width=5,
command=lambda w=w: w.destroy())
box.add('close', text='取消', width=5,
command=lambda w=w: w.destroy())
box.pack(side=Tix.BOTTOM, fill=Tix.X)
top.pack(side=Tix.TOP, fill=Tix.BOTH, expand=1)
if __name__ == '__main__':
root = Tix.Tk()
RunSample(root)
top=Tix.Toplevel(root)
RunSample2(top)
root.update()
root.title('Tix.ButtonBox演示') #Tkinter中設置窗口標題方法
setPlace(root,100,100)
top.title('Tix.ButtonBox演示') #Tkinter中設置窗口標題方法
setPlace(top,100,300)
root.mainloop()
程序運行結果如下圖。
如合作請聯繫.
編寫:獨狼荷蒲
QQ:2775205
電話微信:18578755056
Python Tkinter 開發羣:524949939
博客:https://me.csdn.net/hepu8