python中tkinter模块如何消毁组件

python中tkinter模块如何消毁组件,第1张

如何在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也会出现该字符串,如下图所示:

请点击输入图片描述


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11534058.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-16
下一篇2023-05-16

发表评论

登录后才能评论

评论列表(0条)

    保存