如何正确地从导入的脚本(tkinter、python)打开新窗口?
示例_script.py中的Widget tk.条目不保存值“textvariable”字段 示例_script.py:如何正确地从导入的脚本(tkinter、python)打开新窗口?,python,tkinter,Python,Tkinter,示例_script.py中的Widget tk.条目不保存值“textvariable”字段 示例_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) e
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()
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()
main_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()
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()”更改为
字段的值已更新。为什么?
如何正确地从导入的脚本打开新窗口?Tkinter.Toplevel()不适用。现在我使用subprocess.Popen。当您执行
entryVar=tk.Entry(self).pack()
时,entryVar
将设置为None
,因为这就是pack()
返回的结果。当您在单独一行上调用pack
时,entryVar
将设置为您认为它的功能。您不能在一个程序中创建Tk
类的两个实例。Tkinter不是设计成这样的 不是这个问题。如果tk.Entry(self,textvariable=textVar).pack()或entryVar=tk.Entry(self,textvariable=textVar);entryVar.pack()文本“text1”、“text2”等不显示。如果显示usage entryVar.insert(0,文本)文本,我知道。因此,这种不同的行为很有趣。我的故事:有一个剧本是不能改变的。脚本将创建一个窗口。现在,我使用模块子流程(Popen)从另一个窗口(按下按钮时)调用它。还有其他方法吗?你在评论中问的是一个完全不同的问题。如果您使用popen生成另一个进程,这与原始问题完全不同。对不起。可能应该分为两个问题。非常感谢。