在GTK动作侦听器中操作python变量

时间:2015-01-28 13:45:11

标签: python checkbox gtk

我正在尝试附加到复选框按钮的动作侦听器。我的目标是每当选中/取消选中复选框时切换变量值(0或1)。

我来自C背景,对python来说相当新。我也一直在阅读全局变量,但我似乎无法掌握它。

我先在C中做一个例子:

//#includes

int test; //i could say public int test but it is public by default

int foo()
{
    test = 1;
    return test;
}
void main()
{
   test = 0;
   print (foo);
}

下面是一些示例python代码。

class someRandomClass: 

    def on_checkbutton1_toggled(self, widget, data=None):
        if test == 0:
            test = 1
        if test == 1:
            test = 0

    def __init__(self):
        global test
        test = 0

if __name__ == "__main__":
    main = someRandomClass()
    gtk.main()

执行此python代码并单击复选框会抛出一个     UnboundLocalError:在赋值之前引用的局部变量'test'

我尝试在函数之外创建全局变量但仍在类中 - 与示例C代码的方法相同。

1 个答案:

答案 0 :(得分:0)

发布后我发现自己的答案很快:

def on_checkbutton1_toggled(self, widget, data=None):
    global test
    chkbtn1 = self.builder.get_object("checkbutton1")
    print "BUTTON CHECKED -",chkbtn1.get_active()
    if chkbtn1.get_active() == 0:
        test = 0
    if chkbtn1.get_active() == 1:
        test = 1
    print test

def __init__(self):

    global test 

有了这个,我能够在其他听众中打印出测试的价值。如果其他人想要更多代码,请随时告诉我。