在Python 3.5中使用Tkinter将类值传递给另一个类

时间:2016-01-25 14:27:23

标签: python class python-3.x tkinter

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

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的值?

1 个答案:

答案 0 :(得分:0)

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

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

这是我的解决方案:

Frame