Форум сайта python.su
Добрый день всем!
Недавно начал программировать GUI и столкнулся с проблемой того, что плохо понимаю, как работать с потоками. Представим себе следующий код:
import sys from PySide import QtGui, QtCore import time def foo(): time.sleep(1) class mainWindow(QtGui.QMainWindow): def __init__(self, parent=None): QtGui.QMainWindow.__init__(self) self.button = QtGui.QPushButton('Push', self) self.connect(self.button, QtCore.SIGNAL('clicked()'), QtGui.qApp, QtCore.SLOT('quit()')) self.timer = QtCore.QTimer() self.timer.timeout.connect(foo) self.timer.start(200) app = QtGui.QApplication(sys.argv) window = mainWindow() window.show() app.exec_()
Офлайн
У тебя однопоточная программа, пока выполняется foo интерфейс откликаться не будет.
Для создания потоков см. модуль threading или используй QThread.
Офлайн
чаще запускают в отдельном процессе, Qt не дружит с потоками
.
Офлайн
chudoff_aЭто еще почему?
чаще запускают в отдельном процессе, Qt не дружит с потоками
genusТогда нужно добавить:
при нажатии на которую программа закрывается.
QtGui.QApplication.setQuitOnLastWindowClosed(False)
Офлайн
Спасибо за ответы!
reclosedevВот это как раз важный момент.
chudoff_a
чаще запускают в отдельном процессе, Qt не дружит с потоками
Это еще почему?
reclosedevreclosedev, не совсем понял зачем это нужно? В моём коде просто иллюстрация с минимально работающим кодом, в реальности задача немного другая, конечно, но суть остаётся.
QtGui.QApplication.setQuitOnLastWindowClosed(False)
Офлайн