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 3.x Tkinter跟踪传递字符串而不是帧_Python 3.x_Tkinter - Fatal编程技术网

Python 3.x Tkinter跟踪传递字符串而不是帧

Python 3.x Tkinter跟踪传递字符串而不是帧,python-3.x,tkinter,Python 3.x,Tkinter,我对跟踪方法有一些问题。我正试图建立一个形式,可以改变取决于第一个选项 MCVE: 正如您所见,我需要从表单的前一部分(静态表单)将一些变量传递到此函数中,然后当“ctpyeE”更改为其中一个选项时,我需要重新运行相同的函数,但这次知道ctpyeE设置为什么。然后我可以用它来调整表单的其余部分 我得到的错误来自w.winfo_children(),w是我用来保存表单的框架,但是一旦ctypeE更改并且跟踪运行,它就会将自身更改为空字符串 Exception in Tkinter callback

我对跟踪方法有一些问题。我正试图建立一个形式,可以改变取决于第一个选项

MCVE:

正如您所见,我需要从表单的前一部分(静态表单)将一些变量传递到此函数中,然后当“ctpyeE”更改为其中一个选项时,我需要重新运行相同的函数,但这次知道ctpyeE设置为什么。然后我可以用它来调整表单的其余部分

我得到的错误来自w.winfo_children(),w是我用来保存表单的框架,但是一旦ctypeE更改并且跟踪运行,它就会将自身更改为空字符串

Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Program Files (x86)\Python37-32\lib\tkinter\__init__.py", line 1705, in __call__
return self.func(*args)
  File "C:\Users\Scott\Desktop\patient\caseload.py", line 892, in <lambda>
typeE.trace("w", lambda e=Event(), w=w, f=fn, o=on, s=sn, d=dob, g=ge, t=typeE.get(): self.new_client_window_2(event=e, w=w, fn=f, on=o, sn=s, dob=d, ge=g, ctype=t))
  File "C:\Users\Scott\Desktop\patient\caseload.py", line 877, in new_client_window_2
children = w.winfo_children()
AttributeError: 'str' object has no attribute 'winfo_children'
Tkinter回调中出现异常 回溯(最近一次呼叫最后一次): 文件“C:\Program Files(x86)\Python37-32\lib\tkinter\\ uuuuu init\uuuuu.py”,第1705行,在调用中__ 返回self.func(*args) 文件“C:\Users\Scott\Desktop\patient\caseload.py”,第892行,在 typeE.trace(“w”,lambda e=Event(),w=w,f=fn,o=on,s=sn,d=dob,g=ge,t=typeE.get():self.new_client_window_2(Event=e,w=w,fn=f,on=o,sn=s,dob=d,ge=g,ctype=t)) 文件“C:\Users\Scott\Desktop\patient\caseload.py”,第877行,在新客户端窗口2中 children=w.winfo_children() AttributeError:'str'对象没有属性'winfo_children' 我假设跟踪函数正在函数中设置自己的变量,但是我找不到关于这些变量是什么的任何文档,所以我可以解释它们

注:

self.tku是我自己的类,cFrame和cButton只是添加了pack()的Frame/Button,使其成为一行,应该很容易调整


fn、on、sn、dob和ge都是条目小部件对象。w是保存表单的框架。

简而言之,您使用的跟踪不正确

创建变量跟踪时,将使用三个位置参数调用与跟踪关联的函数(请参阅)。因此,当调用lambda时,
e
将被设置为第一个位置参数,
w
将被设置为第二个位置参数,
f
将被设置为第三个位置参数

一个简单的解决方案是确保lambda在命名参数之前接受这些参数:

typeE.trace("w", lambda name1, name2, operation, e=Event(), w=w, ...etc)

您是否进行过任何调试以验证
w
是否与您认为的一致?你能不能创建一个新的模型,这样我们就可以重现你的问题?@BryanOakley我知道w是什么,问题是它是什么,是错的。它应该是一个帧,但跟踪后它会变成一个字符串。这只发生在跟踪事件之后,尽管它根本没有被更改。我已经按照你的建议添加了MCVE
typeE.trace("w", lambda name1, name2, operation, e=Event(), w=w, ...etc)