Python Tkinter Button从另一个类调用一个函数

时间:2013-06-06 18:09:07

标签: python class

我已经用Tklinter定义了一个Button

class ventanapp(Tk):

    def initialize(self):
        self.grid()
        self.entry = Entry(self)
        msg = Message(text=' SSH - Ingresar IP ->')
        self.entry.grid(column=0,row=0,sticky='EW')
        button = Button(self,text=u"realizar la conexion",command=ssh.crear_ssh())
        button.grid(column=1,row=0)

但是当我从另一个班级打电话给command=ssh.crear_ssh()

class ssh():
    def crear_ssh():
        print('PONER ACA EL CODIGO DE LA CONEXION')`

我收到错误:“未定义全局名称'ssh'”

有什么想法吗?谢谢!

3 个答案:

答案 0 :(得分:0)

我不确定你的项目是如何布局的,但是:

class ventanapp(Tk):

    def initialize(self):
        self.grid()
        self.entry = Entry(self)
        msg = Message(text=' SSH - Ingresar IP ->')
        self.entry.grid(column=0,row=0,sticky='EW')
        #note the lambda below, so the method doesn't run until the button is clicked
        button = Button(self,text=u"realizar la conexion",command=lambda: ssh.crear_ssh)
        button.grid(column=1,row=0)

在同一档案的其他地方:

class ssh():
    def crear_ssh(self): #added 'self' to the args
        print('PONER ACA EL CODIGO DE LA CONEXION')`

答案 1 :(得分:0)

如评论所述,解决方案是创建类的变量,应该在ventana的类定义之前创建SSH。

ssh = ssh() button = Button(self,text = u“realizar la conexion”,command = lambda:ssh.crear_ssh())

非常感谢所有人。

答案 2 :(得分:0)

创建所有变量的顺序非常重要!

命令= ssh.crear_ssh()

应该是第一个!

此致