用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