Article View: pl.comp.lang.python
Article #27744PyQT wątki
From: zigi
Date: Thu, 14 Oct 2010 09:29
Date: Thu, 14 Oct 2010 09:29
68 lines
3152 bytes
3152 bytes
Witam
próbuje zahaczyć temat wielowątkowości w PyQT napisałem prosty stoper
oparty o 2 wątki. Pojawiły się nieoczekiwane problemy.
Gdy w grę wchodzi 1 wątek w głównej klasie stoper działa w/g
zamierzonego planu, w momęcie gdy tworzę drugi wątek tutaj klasa
Stoper().
Mimo stworzenia obiektu klasy zawierającej główne okno programu tutaj
klasa StoperWindow() i odwołaniu się do metody tej klasy nie uzyskuje
oczekiwanych resultatów.
Chciałbym aby informacje stopera były widoczne w polu tekstowym
zawartym w metodzie insert_text() instancji obiektu klasy BaseWindow,
wyniki są przekazwane do tej metody jednak
nie pojawiają sie w polu teksowym.
class StoperWindow(QtGui.QMainWindow):
def __init__(self, parent=None):
QtGui.QWidget.__init__(self, parent)
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
QtCore.QObject.connect(self.ui.actionStart,QtCore.SIGNAL("activated()"),
self.start_clock)
return
def start_clock(self):
stoper = Stoper()
stoper.start()
return
def insert_text(self, sekunda):
self.ui.textEdit.insertPlainText(QtCore.QString("%s\n" % sekunda))
app.processEvents()
return
class Stoper(QThread):
def __init__(self, parent = None):
self.window_clock = StoperWindow()
QThread.__init__(self, parent)
return
def run(self):
self.easy_clock(0,0,0)
return
def easy_clock(self, sekunda, minuta, godzina):
time.sleep(1)
sekunda +=1
if sekunda > 60:
minuta +=1
sekunda = 0
if minuta > 60:
godzina +=1
self.window_clock.insert_text(sekunda)
self.easy_clock(sekunda, minuta, godzina)
return
if __name__ == "__main__":
app = QtGui.QApplication(sys.argv)
myapp = StoperWindow()
myapp.show()
sys.exit(app.exec_())
Technical Details
Message-ID:
<51d0b88c-8d10-4c7b-a1e0-5cade3367aa9@g8g2000yqa.googlegroups.com>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!plix.pl!newsfeed1.plix.pl!newsfeed00.sul.t-online.de!t-online.de!border4.nntp.dca.giganews.com!border2.nntp.dca.giganews.com!nntp.giganews.com!postnews.google.com!g8g2000yqa.googlegroups.com!not-for-mailShow Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!plix.pl!newsfeed1.plix.pl!newsfeed00.sul.t-online.de!t-online.de!border4.nntp.dca.giganews.com!border2.nntp.dca.giganews.com!nntp.giganews.com!postnews.google.com!g8g2000yqa.googlegroups.com!not-for-mail From: zigi <cezar4846@gmail.com> Newsgroups: pl.comp.lang.python Subject: PyQT wątki Date: Thu, 14 Oct 2010 02:29:54 -0700 (PDT) Organization: http://groups.google.com Lines: 69 Message-ID: <51d0b88c-8d10-4c7b-a1e0-5cade3367aa9@g8g2000yqa.googlegroups.com> NNTP-Posting-Host: 217.67.208.92 Mime-Version: 1.0 X-Trace: posting.google.com 1287048594 18873 127.0.0.1 (14 Oct 2010 09:29:54 GMT) X-Complaints-To: groups-abuse@google.com NNTP-Posting-Date: Thu, 14 Oct 2010 09:29:54 +0000 (UTC) Complaints-To: groups-abuse@google.com Injection-Info: g8g2000yqa.googlegroups.com; posting-host=217.67.208.92; posting-account=KO8BxgoAAACCbIevmmXkvGNLzCGU-P0N User-Agent: G2/1.0 X-HTTP-UserAgent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; Promedica24.pl; OfficeLiveConnector.1.3; OfficeLivePatch.0.0; .NET CLR 1.1.4322),gzip(gfe) X-Original-Bytes: 3125 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit