Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 检查条目值后删除tkinter小部件(初学者)_Python_Python 2.7_Tkinter_Widget_Trace - Fatal编程技术网

Python 检查条目值后删除tkinter小部件(初学者)

Python 检查条目值后删除tkinter小部件(初学者),python,python-2.7,tkinter,widget,trace,Python,Python 2.7,Tkinter,Widget,Trace,我是一个初学者,尝试编写一个程序,根据条目的值添加或删除小部件(checkbutton)。例如,如果条目大于1,将添加该复选框,否则,程序将删除该复选框 我的代码将创建小部件,但在更改条目后不会删除它,我无法理解它。你能帮我吗 提前感谢您的帮助 下面是我的代码的一个简短示例: from Tkinter import * root = Tk() def update(*args): print EntryVar.get() if EntryVar.get()>'1':

我是一个初学者,尝试编写一个程序,根据条目的值添加或删除小部件(checkbutton)。例如,如果条目大于1,将添加该复选框,否则,程序将删除该复选框

我的代码将创建小部件,但在更改条目后不会删除它,我无法理解它。你能帮我吗

提前感谢您的帮助

下面是我的代码的一个简短示例:

from Tkinter import *

root = Tk()

def update(*args):
    print EntryVar.get()

    if EntryVar.get()>'1':
        cb = Checkbutton(root,text="Show check box")
        cb.grid(row = 1)

    elif EntryVar.get()<='1' or EntryVar.get() == '':
        try:
            cb.grid_remove()
        except:
            pass

EntryVar = StringVar()
EntryVar.trace('w',update)
Entry = Entry(root,textvariable = EntryVar)
Entry.grid(row = 0)


root.mainloop()
从Tkinter导入*
root=Tk()
def更新(*args):
print EntryVar.get()
如果EntryVar.get()>'1':
cb=复选按钮(根,text=“显示复选框”)
cb.网格(行=1)
elif EntryVar.get()一个问题是,cb在try:下是“未解决的”,一旦您将其声明为全局,它将有点像您想要的那样“行为”:

from Tkinter import *

root = Tk()

def update(*args):
    print EntryVar.get()
    global cb
    if EntryVar.get()>'1':
        cb = Checkbutton(root,text="Show check box")
        cb.grid(row = 1)

    elif EntryVar.get()<='1' or EntryVar.get() == '':
        try:
            cb.grid_remove()

        except:
            pass

EntryVar = StringVar()
EntryVar.trace('w',update)
Entry = Entry(root,textvariable = EntryVar)
Entry.grid(row = 0)


root.mainloop()
从Tkinter导入*
root=Tk()
def更新(*args):
print EntryVar.get()
全球cb
如果EntryVar.get()>'1':
cb=复选按钮(根,text=“显示复选框”)
cb.网格(行=1)
elif EntryVar.get()'2':
(您可以处理此问题)行为会发生变化,因此逻辑肯定有点可疑。

一个问题是,在try:下cb是“未解决的”,一旦您将其声明为全局的,它将有点像您想要的那样“行为”:

from Tkinter import *

root = Tk()

def update(*args):
    print EntryVar.get()
    global cb
    if EntryVar.get()>'1':
        cb = Checkbutton(root,text="Show check box")
        cb.grid(row = 1)

    elif EntryVar.get()<='1' or EntryVar.get() == '':
        try:
            cb.grid_remove()

        except:
            pass

EntryVar = StringVar()
EntryVar.trace('w',update)
Entry = Entry(root,textvariable = EntryVar)
Entry.grid(row = 0)


root.mainloop()
从Tkinter导入*
root=Tk()
def更新(*args):
print EntryVar.get()
全球cb
如果EntryVar.get()>'1':
cb=复选按钮(根,text=“显示复选框”)
cb.网格(行=1)

elif EntryVar.get()'2':
(您可以处理此问题)行为会发生变化,因此逻辑肯定有问题。

因此,当您在输入框中键入任何内容时,会出现复选框,但当您删除其中的所有内容时,您希望删除复选框小部件吗?是的,小于1的任何内容(当我键入一个大于1的数字时,我希望复选框出现,如果我键入一个小于1的数字,或者如果我将输入框留空,我希望该复选框被删除。@gllsas是,它会创建一个输入了任何字符串的小部件是,但如果我键入一个小于1的数字,或者如果我删除了输入框中的所有内容,它不会删除该复选框这是我的问题!你知道是什么导致了这个问题吗?@gllsso,当你在输入框中键入任何内容时,复选框会出现,但当你删除其中的所有内容时,你希望删除复选框小部件?是的,小于1的任何内容(当我键入一个大于1的数字时,我希望复选框出现,如果我键入一个小于1的数字,或者如果我将输入框留空,我希望该复选框被删除。@gllsas是,它会创建一个输入了任何字符串的小部件是,但如果我键入一个小于1的数字,或者如果我删除了输入框中的所有内容,它不会删除该复选框这是我的问题!你知道是什么导致了这个问题吗?@gllsThis部分有效!!仍然存在一个问题:如果条目大于20,它将不再有效。假设我在条目框中输入了20,复选框将出现,但是如果我将条目更改为1或零(或将条目框留空),复选框不会消失!您知道为什么会发生这种情况吗?再次感谢您的帮助,非常感谢!:)谢谢您的帮助!:)@gllsi无法理解为什么当字符串大于“20”时,复选框不会被删除。当前正在检查,可能其他人有答案,但当我删除您的异常处理时,我会收到其他可能导致问题的错误。您能将错误粘贴到此处吗?因为我删除了try/except语句,并且在>20 glit旁边没有收到任何错误ch!@gllsThis部分有效!!仍然存在一个问题:如果条目大于20,它将不再有效。假设我在条目框中输入了20,复选框将出现,但如果我将条目更改为1或0(或将条目框留空),复选框不会消失!您知道为什么会发生这种情况吗?再次感谢您的帮助,非常感谢!:)感谢您的帮助!:)@gllsi无法理解为什么字符串大于“20”时复选框不会被删除。当前正在检查,可能其他人有答案,但当我删除您的异常处理时,我会收到其他可能导致问题的错误。您可以将错误粘贴到此处吗?因为我删除了try/except语句,除了>20故障之外,我没有得到任何错误@glls