如何正确地从导入的脚本(tkinter、python)打开新窗口?

如何正确地从导入的脚本(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

示例_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)
        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生成另一个进程,这与原始问题完全不同。对不起。可能应该分为两个问题。非常感谢。