gpt4 book ai didi

python - 从 tkinter 中的不同子例程销毁小部件

转载 作者:太空宇宙 更新时间:2023-11-03 16:49:32 25 4
gpt4 key购买 nike

所以我现在使用 .place 来设置小部件的位置。

def printresults():
SClabelspare=Label(cwindow, text ="Please enter the Customers ID Number:" ).place(x=10,y=560)

我希望调用另一个子例程来销毁这些小部件。我相信有一个叫做 .destroy() 或 .place_destroy 的东西?我不太确定这些将如何工作,但我尝试创建一个看起来像这样的:

def destroy_widgets():
SClabelspare.destroy()

但它只是产生一个错误代码,显示NameError: global name 'SClabelspare' is not Define

任何帮助将不胜感激!

最佳答案

首先,place() 返回 None,因此 SClabelspare==None 不是 Tkinter ID。其次它是本地的,因此当函数退出时会被垃圾收集。您必须保留对对象的引用,这可以通过多种方式完成。在进一步学习之前,Python 教程是一个了解基础知识的好主意 https://wiki.python.org/moin/BeginnersGuide/Programmers此外,在不使用类结构的情况下编写 Tkinter 应用程序是一种令人沮丧的体验,除非它非常简单。否则,您会遇到像您这样的错误,并且必须花费大量时间和精力来尝试克服它们。这是我已经拥有的一个示例,旨在给出该过程的总体思路。

from Tkinter import *
from functools import partial

class ButtonsTest:
def __init__(self):
self.top = Tk()
self.top.title("Click a button to remove")
Label(self.top, text="Click a button to remove it",
bg="lightyellow").grid(row=0)

self.top_frame = Frame(self.top, width =400, height=400)
self.button_dic = {}
self.buttons()
self.top_frame.grid(row=1, column=0)

Button(self.top_frame, text='Exit', bg="orange",
command=self.top.quit).grid(row=10,column=0, columnspan=5)

self.top.mainloop()

##-------------------------------------------------------------------
def buttons(self):
b_row=1
b_col=0
for but_num in range(1, 11):
## create a button and send the button's number to
## self.cb_handler when the button is pressed
b = Button(self.top_frame, text = str(but_num),
command=partial(self.cb_handler, but_num))
b.grid(row=b_row, column=b_col)
## dictionary key=button number --> button instance
self.button_dic[but_num] = b

b_col += 1
if b_col > 4:
b_col = 0
b_row += 1

##----------------------------------------------------------------
def cb_handler( self, cb_number ):
print "\ncb_handler", cb_number
self.button_dic[cb_number].grid_forget()

##===================================================================
BT=ButtonsTest()

关于python - 从 tkinter 中的不同子例程销毁小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35996649/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com