2

来自 example_script.py 的小部件 tk.Entry 不保存值“textvariable”字段。

示例脚本.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。

4

2 回答 2

1

当你这样做时entryVar = tk.Entry(self).pack()entryVar将被设置为,None因为那是pack()返回的。当您pack在单独的线路上调用时,entryVar将设置为您认为它的功能。

于 2012-05-21T12:14:05.253 回答
0

您不能Tk在一个程序中创建该类的两个实例。Tkinter 并非旨在以这种方式工作。

于 2012-05-21T12:26:20.973 回答