【问题标题】:Passing class values to another class using Tkinter in Python 3.5在 Python 3.5 中使用 Tkinter 将类值传递给另一个类
【发布时间】:2016-05-01 21:41:02
【问题描述】:

我有以下代码(我的真实程序示例):

from tkinter import *
def class1(Frame)

    def nv(self,x):
        self.vent=Toplevel(self.master)
        self.app=class2(self.vent)
        self.value=x

    def __init__(self,master):
        super().__init__(master)
        self.master=master
        self.frame=Frame(self.master)
        self.btn=Button(self, text="example", command=lambda: self.nw(1))
        self.btn.pack()
        self.pack()

def class2(Frame):
    def __init__(self, master):
        super().__init__(master)
        self.master=master
        self.frame=Frame(self.master)
        self.value=class1.nw.value.get()
root= Tk()
marco=Frame(root)
marco.pack
lf=class1(marco)
root.mainloop()

最后一部分是问题,我不能正确使用 .get() 来解决这个问题,我想在创建新窗口时获取 x 的值。 我使用 lambda,所以我可以执行带参数的命令。 所以问题是,有没有办法让我访问类 2 中 x 的值?

【问题讨论】:

    标签: python class python-3.x tkinter


    【解决方案1】:

    在使用tkinter 时,您似乎对类的使用感到很困惑。 super() 不应与 tkinter 一起使用,正如 here 所解释的那样,并且在声明一个类时,您应该使用 class 关键字,而不是 def.get()tkinter 变量类的方法,例如tkinter.IntVartkinter.StringVar 等,因此在您给出的示例中不需要。

    您需要的是 Frame 中的函数,您试图从 (nv) 获取 x 的值,然后将该值解析为子 Frame 中的 __init__ 方法。

    这是我的解决方案:

    from tkinter import *
    
    class Class1(Frame):
    
        def nv(self,x):
            self.vent = Toplevel(self.master)
            self.app = Class2(self.vent,x)
    
        def __init__(self,master):
            Frame.__init__(self,master)
            self.master = master
            self.btn = Button(self, text="example", command=lambda: self.nv(1))
            self.btn.pack()
            self.pack()
    
    class Class2(Frame):
    
        def __init__(self, master, x):
            Frame.__init__(self,master)
            self.master=master
            self.frame=Frame(self.master)
            self.x_text = Label(self, text=str(x))
            self.x_text.pack()
            self.pack()
    
    root = Tk()
    marco = Frame(root)
    marco.pack()
    lf = Class1(marco)
    root.mainloop()
    

    【讨论】:

      猜你喜欢
      • 2014-02-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-05
      • 2021-01-21
      • 2014-02-26
      • 2015-07-19
      相关资源
      最近更新 更多