【发布时间】:2020-10-07 18:02:38
【问题描述】:
目标
我正在尝试编写一个基本文件,我可以将其导入所有其他程序中,这些程序将具有一个简单的功能,可以从用户那里获取输入然后返回它。
代码
为此,我有以下代码:
class takeInput(object):
def __init__(self,requestMessage,parent):
self.string = ''
self.frame = Frame(parent)
self.frame.pack()
self.acceptInput(requestMessage)
def acceptInput(self,requestMessage):
r = self.frame
k = Label(r,text=requestMessage)
k.pack(side='left')
self.e = Entry(r,text='Name')
self.e.pack(side='left')
self.e.focus_set()
b = Button(r,text='okay',command=self.gettext)
b.pack(side='right')
def gettext(self):
self.string = self.e.get()
self.frame.destroy()
print self.string
def getString(self):
return self.string
def getText(requestMessage,parent):
global a
a = takeInput(requestMessage,parent)
return a.getString()
我还添加了一些脚本级别的代码来测试:
root = Tk()
getText('enter your name',root)
var = a.getString()
print var
root.mainloop()
真正让我困惑的是:
-
var没有我输入的值,它有空字符串'' -
a.string变量具有我输入的值,我从 shell 中检查了它。
另外当我尝试将 a.getString() 返回的字符串分配给 shell 中的 var 时,它起作用了。
注意我是 Tkinter 编程新手,不完全理解 mainloop() 的工作原理。所以也许这就是问题所在。但我不确定。
规格
操作系统:Linux Mint 14
Python IDLE 2.7
请帮我解决这个问题。
【问题讨论】:
-
Mainloop 只不过是一个看起来大致类似于
while the_main_window_exists(): get_the_next_event(); process_the_event()的无限循环。它没有什么特别神秘的地方。