2

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を使用します。

4

2 に答える 2

1

を行うentryVar = tk.Entry(self).pack()と、それが返されるため、entryVarに設定されます。別の回線で呼び出すと、想定どおりに設定されます。Nonepack()packentryVar

于 2012-05-21T12:14:05.253 に答える
0

Tk1 つのプログラムでクラスの 2 つのインスタンスを作成することはできません。Tkinter はそのように動作するようには設計されていません。

于 2012-05-21T12:26:20.973 に答える