2017-05-20 20 views
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() 

答えて

0

、例:

import Tkinter as tk 

root = tk.Tk() 

# var tkinter are globals in tkinter and are accessible everywhere 
var = tk.IntVar() 

var.set(123456789) 

my_label = tk.Label(root) 
my_label.pack() 

# Now you can access to your var with its name and getvar method 
# _name return the identifier in tkinter, PY_VAR0, PY_VAR1, etc. 
my_label['text'] = my_label.getvar(var._name) 

# But you can specify your own name for your vars tkinter 
my_var = tk.StringVar(my_label, '', 'my_var') # (master, value, name) 
my_var.set('blabla') 

my_blabla_label = tk.Label(root, text=root.getvar('my_var')).pack() 

root.mainloop() 
関連する問題