【发布时间】:2016-07-27 09:36:23
【问题描述】:
使用 Python 2.7,我使用 Tkinter 构建了一个 GUI。在我的 GUI 上,我有一个按钮可以打开一个输入弹出框。弹出框的调用是:
if analysistype == 'Line of sight':
d = MyDialog(root)
弹出框构造如下:
class MyDialog(tkSimpleDialog.Dialog):
def body(self, master):
Label(master, text="Things").grid(row=0, columnspan=2)
Label(master, text="Thing 1").grid(row=1)
Label(master, text="Thing 2").grid(row=2)
self.t1 = Entry(master)
self.t2 = Entry(master)
thing1 = self.t1.grid(row=1, column=1)
thing2 = self.t2.grid(row=2, column=1)
return thing1, thing2
在弹出框中输入任何内容之前,我遇到了一个错误;完整的堆栈跟踪如图所示(分成几行,所以它不仅仅是一堆文本):
Tkinter 回调异常
Traceback(最近一次调用最后一次):
调用中的文件“C:\Users\ajpung\AppData\Local\Continuum\Anaconda2\lib\lib-tk\Tkinter.py”,第 1536 行 返回 self.func(*args)
文件“directory/ThingFinder.py”,第 547 行,在 fetch_data 中 thing1 = MyDialog(root)
文件“C:\Users\ajpung\AppData\Local\Continuum\Anaconda2\lib\lib-tk\tkSimpleDialog.py”,第 81 行,在 init self.initial_focus.focus_set()
AttributeError: 'tuple' object has no attributeattribute 'focus_set'
如果我注释掉“return thing1,thing2”行,我不会收到此错误。但是,我仍然需要从弹出框中返回变量。为什么会这样?
【问题讨论】:
-
我们可以有完整的堆栈跟踪吗?
-
已编辑以包含完整的堆栈跟踪
-
@Slayer 我对此有点陌生,所以我现在知道了。是否有一种有效的方法从弹出窗口的输入框中提取值,基于使用 Tkinter 的
grid构建的 GUI? -
注意——但这并没有改变,但是当弹出框第一次打开时我仍然得到上面的 AttributeError
标签: python-2.7 user-interface tkinter tk popupwindow