Portál AbcLinuxu, 14. prosince 2025 16:44
QCoreApplication::processEvents()
#!/usr/bin/python
# -*- coding: utf-8 -*-
import gtk, gobject
class Killme:
def __init__(self):
self.button = gtk.ToggleButton()
self.timeout = None
self.toggled()
self.button.connect('toggled', self.toggled)
self.button.show()
w = gtk.Window()
w.add(self.button)
w.connect('destroy', gtk.main_quit)
w.show()
gtk.main()
def run_timer(self, foo = None):
self.seconds -= 1
self.button.set_label(u'Chcípnu za %d sekund' %self.seconds)
self.timeout = gobject.timeout_add(1000, self.run_timer, None)
if self.seconds == 0:
gtk.main_quit()
def stop_timer(self):
if self.timeout:
gobject.source_remove(self.timeout)
self.button.set_label(u'Zapni odpočítávání')
def toggled(self, foo = None):
self.seconds = 10
if self.button.get_active():
self.run_timer()
else:
self.stop_timer()
k = Killme()
Jinak vláknům, hlavní smyčce událostí, časově náročným funkcím a obnovování GUI se věnuje celá sekce PyGTK FAQ:
http://faq.pygtk.org/index.py?req=index
):
#!/usr/bin/python
from qt import *
import time
import threading
def click():
v = threading.Thread(target = vlakno)
v.start()
def vlakno():
time.sleep(5)
print "ok"
app=QApplication([])
win=QMainWindow()
win.button=QPushButton(win,"Hello")
win.button.setText("Hello World")
win.show()
app.connect(app, SIGNAL("lastWindowClosed()"), app, SLOT("quit()"))
app.connect(win.button, SIGNAL("clicked()"),click)
app.exec_loop()
a opravdu se GUI během těch 5-ti vteřin překresluje.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.