
如何在tkinter窗体上动态创建组件以及销毁组件的方法。
import tkinter
import tkinter.messagebox
import tkinter.simpledialog
btnList = []
# 动态创建组件,并计算组件在窗体上的位置
def place(n):
for i in range(n):
exec('btn'+str(i)+'=tkinter.Button(root,text='+str(i)+')')
eval('btn'+str(i)).place(x=80, y=10+i*30, width=60, height=20)
btnList.append(eval('btn'+str(i)))
root.geometry('200x'+str((n)*30+70)+'+400+300')
return n*30 + 10
# 创建tkinter应用程序
root = tkinter.Tk()
# 窗口标题
root.title('动态创建组件')
# 窗口初始大小和位置
root.geometry('200x180+400+300')
# 不允许改变窗口大小
root.resizable(False, False)
# 增加按钮的按钮
def btnSetClick():
n = tkinter.simpledialog.askinteger(title='输入一个整数',
prompt='想动态增加几个按钮:',
initialvalue=3)
if n and n>0:
startY = place(n)
modify(startY)
# 根据需要禁用和启用“增加按钮”和“清空按钮”
btnSet['state'] = 'disabled'
btnClear['state'] = 'normal'
btnSet = tkinter.Button(root,
text='增加按钮',
command=btnSetClick)
def btnClearClick():
global btnList
# 删除动态创建的按钮
for btn in btnList:
btn.destroy()
btnList = []
modify(20)
btnClear['state'] = 'disabled'
btnSet['state'] = 'normal'
btnClear = tkinter.Button(root,
text='清空按钮',
command=btnClearClick)
# 默认处于禁用状态
btnClear['state'] = 'disabled'
# 动态调整“增加按钮”和“清空按钮”的位置
def modify(startY):
btnSet.place(x=10, y=startY, width=80, height=20)
btnClear.place(x=100, y=startY, width=80, height=20)
modify(20)
root.mainloop()
代码运行后初始状态为:单击“增加按钮”后,在d出的窗口中输入5,然后窗体变为下面的样子:
单击“清空按钮“后恢复到初始状态。
python中tkinter需要使用accelerator添加菜单的快捷键,该选项仅显示,并没有实现加速键的功能,添加功能需按键绑定,代码如下:from tkinter import *
root = Tk()
def callback():
print("~被调用了~")
# 创建一个顶级菜单
menubar = Menu(root)
# 创建一个下拉菜单“文件”,然后将它添加到顶级菜单中
filemenu = Menu(menubar, tearoff=False)
filemenu.add_command(label="打开", command=callback, accelerator='Ctrl+N')
filemenu.add_command(label="保存", command=callback)
filemenu.add_separator()
filemenu.add_command(label="退出", command=root.quit)
menubar.add_cascade(label="文件", menu=filemenu)
# 显示菜单
root.config(menu=menubar)
root.bind_all("<Control-n>", lambda event: print('加速键Ctrl+N'))
mainloop()
方法/步骤
第一步,打开eclipse开发工具,新建python文件;导入tkinter需要的包,设置窗口标题,如下图所示:
请点击输入图片描述
第二步,默认的窗口很小,这里设置窗口的宽度和高度,400x300,如下图所示:
请点击输入图片描述
第三步,在窗口中添加一个Entry组件,设置show属性为None,调用pack()方法添加到窗口中;执行这个文件,d出一个窗口,如下图所示:
请点击输入图片描述
请点击输入图片描述
第四步,再次在窗口上添加一个Button按钮,文本内容为插入字符,设置宽度和高度,如下图所示:
请点击输入图片描述
第五步,添加按钮点击事件,定义事件函数appendStr;获取Entry组件的值,赋值给Label(添加Label控件),结果出现了报错,Label控件没有insert属性,如下图所示:
请点击输入图片描述
请点击输入图片描述
第六步,将Label控件改为Text文本框,再次执行这个文件;在Entry控件输入字符串,点击按钮之后相应的Text也会出现该字符串,如下图所示:
请点击输入图片描述
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)