0
コントローラを使用して、あるウィンドウから別のウィンドウにIntVarの下に格納されている値を渡したいとします。しかし問題は、価値がそれ自体を更新しないということです。Tkinterのあるウィンドウから別のウィンドウにIntVar()値を渡す
class DSS(tk.Tk):
def __init__(self, *args, **kwargs):
tk.Tk.__init__(self, *args, **kwargs)
container = tk.Frame(self)
container.pack(side='top', fill='both', expand=True)
container.grid_rowconfigure(0, weight=1)
container.grid_columnconfigure(0, weight=1)
self.frames = {}
for F in [App, Optimize]:
frame = F(container, self)
self.frames[F] = frame
frame.grid(row=0, column=0, sticky='nsew')
self.show_frame(App)
def show_frame(self, cont, extras):
print "show frame"
frame = self.frames[cont]
extras.update(extras)
print str(cont)
frame.tkraise()
def return_frame(self, cont):
return self.frames[cont]
これはコントローラクラスです。コードの残りの部分が長すぎるので、私は転送を担当する行をポストしています。
radio_btn = tk.Radiobutton(self.kernel_frame, text=txt, variable=self.v, command=lambda: self.import_kernel(), value=val)
radio_btn.grid(row=row_no, column=1, sticky='w')
これは私がv
の値を送信していると私はそれにアクセスするためにatryところこれがどこからです。あなたはgetvarメソッドを使用することができます
class Optimize(tk.Frame):
def __init__(self, master, controller, extras):
tk.Frame.__init__(self, master)
container = tk.Frame(self)
container.pack()
app = controller.return_frame(App)
# self.v = app.v
tk.Label(container, text=app.v.get()).pack()
tk.Button(container, text="Back", command=lambda: controller.show_frame(App, {})).pack()