Pygtk客户端应用程序

时间:2013-10-17 09:54:47

标签: python gtk pygtk

我想在pygtk中为我的Django项目创建一个客户端前端。我的一般想法是有一个主窗口,每次用户有一个动作,必须更改屏幕卸载以前的小部件并加载新的小部件。例如,如果我有一个登录页面,在用户登录后,他会看到一个客户屏幕。我希望将新屏幕放在同一个主窗口上,有点像页面堆栈,但没有“后退”功能。我的第一个想法是为每个屏幕,show_login,show_customers_screen等创建一个函数。这是一个不错的选择还是我应该尝试更好的选择。第二个问题,与第一个问题有关。我可以在函数内创建回调吗?

e.g

This would be a method of MainWindow
def create_login(self):
    ....creating widgets here
    #UnboundLocalError: local variable 'clear_clb' referenced before assignment
    btnlogin.connect('clicked', clear_clb, data=None)


    def clear_clb(widget, data=None):
          ..log in process

我知道为什么我会收到错误。问题是我希望这个func清除的字段在create_login中是本地的。这是正确的做法吗?

1 个答案:

答案 0 :(得分:0)

在引用它之前定义clear_clb符号:

def create_login(self):
    # create widgets
    def clear_clb(widget, data=None):
        # log in process
    btnlogin.connect('clicked', clear_clb, data=None)

然而,更常见的,我认为更具可读性的方法是将{x 1}}的属性保存为小部件的引用:

self