Skip to main content
 首页 » 编程设计

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

2025年05月04日8Leo_wl

来自 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 会设置为您认为的值。