来自 example_script.py 的小部件 tk.Entry 不保存值“textvariable”字段。
example_script.py:
import Tkinter as tk
class App(tk.Frame):
def __init__(self, master, text):
tk.Frame.__init__(self, master)
textVar = tk.StringVar()
textVar.set(text)
entryVar = tk.Entry(self, textvariable=textVar).pack()
self.pack()
def main():
root = tk.Tk()
text = ['text1', 'text2', 'text3']
for i in text:
App(root, i)
root.mainloop()
main_script.py:
import Tkinter import example_script as ex
if __name__ == '__main__':
root = Tkinter.Tk()
Tkinter.Button(root, text='press', command=lambda: ex.main()).pack()
root.mainloop()
如果我将行 'entryVar = tk.Entry(self, textvariable=textVar).pack()' 更改为
entryVar = tk.Entry(self)
entryVar.pack()
entryVar.insert(0, text)
字段的值已更新。为什么?
如何从导入的脚本正确打开新窗口? Tkinter.Toplevel() 不合适。现在我使用 subprocess.Popen。
请您参考如下方法:
当你执行 entryVar = tk.Entry(self).pack() 时,entryVar 将被设置为 None 因为那是pack() 返回。当您在单独的行上调用 pack 时,entryVar 会设置为您认为的值。
