我正在创建一个程序,用于不断检查MySQL数据库中的更改,并根据更新GTK显示。保持检查的部分处于无限循环中。gtk窗口关闭后退出无限循环
我想要的是,一旦GTK窗口关闭,我就可以摆脱无限循环。
但我不知道用什么条件。我试过
if !window:
和
if window == None:
但在这两种情况下,这是行不通的。
我的代码的结构是这样的:
while True:
# my code
while gtk.events_pending():
gtk.main_iteration()
# something to exit here
window.connect("destroy", gtk.main_quit())
我不知道,如果把“window.connect”有可能会引起问题,因为窗口似乎关闭就好了。另外,如果我把它放在循环中,或循环之前,我会得到一个运行时错误:在mainloop之外调用。
所以要重新迭代,我如何使用窗口关闭作为条件退出无限循环?我不希望用户必须使用Ctrl + C。
在此先感谢!
我试过了。我做了一个叫做check_DB的函数。首先,我试着像这样调用它:gobject.timeout_add(1000,check_DB),但似乎没有工作。 我不想重复建立与MySQL数据库的连接,所以我不想在函数内执行那一点。 但是,我无法将连接变量传递给check_Db。 帮助? – Antimony 2012-07-26 20:11:57
为了简单起见,我将连接对象设置为全局变量。 http://stackoverflow.com/questions/423379/using-global-variables-in-a-function-other-than-the-one-that-created-them – anttix 2012-07-26 20:57:05
@Antimony:如果你设置'win.connection = MyQuery.__ init__'中的MySQLdb.connect(...),那么当'win.check_DB'被调用时,你可以使用它。或者像@anttix所暗示的那样,你可以把连接变成一个全局变量。 – unutbu 2012-07-26 21:04:55