Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/313.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.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 3.x_Tkinter - Fatal编程技术网

Python 在通过tkinter小部件调用另一个类之后,如何保持变量的值?

Python 在通过tkinter小部件调用另一个类之后,如何保持变量的值?,python,python-3.x,tkinter,Python,Python 3.x,Tkinter,我是tkinter的新手,我正在努力处理我的代码,它应该在tkinter中启动一个按钮和输入框,然后等待用户输入“train”,单击按钮,并将1添加到训练变量中,删除所有小部件。然后,代码应该返回while循环,重新启动小部件并重复,同时保存训练变量。但是,当我运行代码时,循环会经过一次,即使用户多次输入“train”,变量也会保持在1。我已尝试将变量training设置为IntVar()类型,但无法在“training=training+1”行中为其添加1。有什么想法吗 import tkin

我是tkinter的新手,我正在努力处理我的代码,它应该在tkinter中启动一个按钮和输入框,然后等待用户输入“train”,单击按钮,并将1添加到训练变量中,删除所有小部件。然后,代码应该返回while循环,重新启动小部件并重复,同时保存训练变量。但是,当我运行代码时,循环会经过一次,即使用户多次输入“train”,变量也会保持在1。我已尝试将变量training设置为IntVar()类型,但无法在“training=training+1”行中为其添加1。有什么想法吗

import tkinter as tk
def main():
    training=0
    x="train"
    while(x=="train"):
        x=tk.Entry(root)
        x.pack()
        tr=tk.Button(root, text='Ok', command=lambda: amount(training,x.get()))
        tr.pack()

def amount(training,x):
    if(x=="train"):
        training=training+1
        list = root.slaves()
        for slave in list:
            slave.forget()
 main()

一旦你看到另一个问题,你可以做同样的事情并调用intvart的“set”函数谢谢,我已经解决了,但是我的while循环不重复的问题仍然存在。你的循环只运行一次的原因是你做了
while(x==“train”):
,然后将
x
从字符串
'train'
更改为
条目
,这样它就不再等于
'train'
。但是如果你没有误用同一个变量来表示这两个不同的东西,它将永远循环,创建尽可能多的条目和按钮,直到引发异常。我认为你真的需要阅读关于tkinter的教程,因为这远远不是有意义的代码,所以很难解释如何“修复”它。我理解,我不希望我的循环永远持续下去。我希望变量最初等于“train”,然后我希望每次用户单击“ok”按钮时都检查我的输入小部件,并且他们输入的任何内容都应设置为等于x变量。然后,如果新的x变量值仍然等于“train”,我希望循环重复,从而触发amount函数,使1添加到训练变量中,如果用户愿意,他们可以再次输入“train”,从而再次触发amount函数。对不起,我一定解释得很糟糕。