0
我需要打開我的主窗口的功能,並保持這個功能運行,因爲它檢查一些狀態(它是again()函數,我刪除了這個例子中的檢查)。此功能必須保持原樣。但主窗口掛起。請幫忙。python主窗口掛起計時器
# -*- coding: utf-8 -*-
import pygtk
pygtk.require("2.0")
import gtk
import gobject
import time
gtk.gdk.threads_init()
class App:
def __init__(self):
self.okno = gtk.Window(gtk.WINDOW_TOPLEVEL)
self.okno.resize(400,150)
self.okno.show_all()
self.again()
def again(self):
i=0
while 1:
print i
i=i+1
if __name__ == "__main__":
app = App()
gtk.threads_enter()
gtk.main()
gtk.threads_leave()
更改:
# -*- coding: utf-8 -*-
import pygtk
pygtk.require("2.0")
import gtk
import gobject
import time
import threading, sys
gtk.gdk.threads_init()
class App(threading.Thread):
def __init__(self):
self.okno = gtk.Window(gtk.WINDOW_TOPLEVEL)
self.okno.resize(400,150)
self.okno.show_all()
self.again()
def again(self):
i=0
while 1:
print i
sys.stdout.flush()
i=i+1
time.sleep(1)
if __name__ == "__main__":
gtk.threads_enter()
threading.Thread(target=App).start()
gtk.threads_leave()
gtk.main()
您沒有正確使用線程。你應該在'app = App()'和'gtk.threads_leave()'後面說'gtk.threads_enter()'。然而,你甚至不使用線程,所以你還應該把'app = App()'改爲'threading.Thread(target = App).start()'。你需要導入'線程'。 – zondo
Zondo,謝謝。我改變了我的代碼,但它沒有按預期工作。我錯過了什麼嗎? – peter
這可能只是打印一些沒有暫停*和*處理窗口事件的東西太多了,無法處理。 – zondo