Найти - Пользователи
Полная версия: Вопрос по PyQt4
Начало » GUI » Вопрос по PyQt4
1
grok
def count(interval):
global number
number = 0

while True:
number += 1
sleep(interval)


t = Thread(target = count, args = (5,))
t.daemon = True
t.start()


class MyClass(QtGui.QWidget):
def __init__(self, parent=None):
QtGui.QWidget.__init__(self, parent)

self.setWindowTitle('Test')

label = QtGui.QLabel(str(number), self)
label.move(15, 10)

self.resize(250, 30)


app = QtGui.QApplication(sys.argv)
qb = MyClass()
qb.show()
sys.exit(app.exec_())
В результате работы этой программы, я намеревался получить в окне счет от нуля и далее с интервалом 5 секунд, но почему-то label принимает только первое значение.
Подскажите в чем проблема?
Soteric
Подозреваю потому, что примитивные типы (строки и числа) являются значимыми, а не ссылочными. Поэтому здесь
label = QtGui.QLabel(str(number), self)
будет создана независимая копия числа number.
truporez
..в том, что label'у надо делать setText руками. Он понятия не имеет о вашей number и уж о том что она изменилась тем более.
Делать это надо из отдельной нитки, либо через Queue, либо через qt-сигналы.
grok
truporez
..в том, что label'у надо делать setText руками. Он понятия не имеет о вашей number и уж о том что она изменилась тем более.
Делать это надо из отдельной нитки, либо через Queue, либо через qt-сигналы.
Думал обойтись без очередей и сигналов, похоже не получится.
Спасибо)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB