簡體   English   中英

在Tkinter中將IntVar()值從一個窗口傳遞到另一個窗口

[英]Passing IntVar() values from one window to another in 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值的地方

這是我嘗試訪問的地方。

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()

您可以使用getvar方法,例如:

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()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM