Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 20, 2011 13:57:12

grok
От:
Зарегистрирован: 2010-09-09
Сообщения: 74
Репутация: +  0  -
Профиль   Отправить e-mail  

Вопрос по PyQt4

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 принимает только первое значение.
Подскажите в чем проблема?



Офлайн

#2 Фев. 20, 2011 14:35:35

Soteric
От:
Зарегистрирован: 2010-09-19
Сообщения: 352
Репутация: +  20  -
Профиль   Отправить e-mail  

Вопрос по PyQt4

Подозреваю потому, что примитивные типы (строки и числа) являются значимыми, а не ссылочными. Поэтому здесь

label = QtGui.QLabel(str(number), self)
будет создана независимая копия числа number.



Офлайн

#3 Фев. 20, 2011 14:38:11

truporez
От:
Зарегистрирован: 2009-05-08
Сообщения: 266
Репутация: +  6  -
Профиль   Адрес электронной почты  

Вопрос по PyQt4

..в том, что label'у надо делать setText руками. Он понятия не имеет о вашей number и уж о том что она изменилась тем более.
Делать это надо из отдельной нитки, либо через Queue, либо через qt-сигналы.



Офлайн

#4 Фев. 20, 2011 14:50:18

grok
От:
Зарегистрирован: 2010-09-09
Сообщения: 74
Репутация: +  0  -
Профиль   Отправить e-mail  

Вопрос по PyQt4

truporez
..в том, что label'у надо делать setText руками. Он понятия не имеет о вашей number и уж о том что она изменилась тем более.
Делать это надо из отдельной нитки, либо через Queue, либо через qt-сигналы.
Думал обойтись без очередей и сигналов, похоже не получится.
Спасибо)



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version