2009-10-13 3 views
1

Я хочу отобразить некоторые QTextEdits в моем главном окне в произвольных местах. Ниже моя первая попытка. Это не работает. Если я создаю текстовые изменения до того, как я покажу это окно, появятся текстовые изменения, но если я их создам после того, как я покажу это окно, они не появятся. Что с этим? Как я могу получить созданные позже?PyQt: Отображение QTextEdits над окном

import sys, random 

from PyQt4 import QtGui, QtCore 

app = QtGui.QApplication(sys.argv) 
win = QtGui.QMainWindow() 
win.resize(500,500) 

def new_text(): 
    print "new text" 
    text = QtGui.QTextEdit(win) 
    text.move(random.random() * 400, random.random() * 400) 

for i in range(3): 
    new_text() 

timer = QtCore.QTimer() 
timer.connect(timer, QtCore.SIGNAL("timeout()"), new_text) 
timer.start(500) 

win.show() 
app.exec_() 

ответ

1

О, я понял. Вы должны вызывать показ на каждом виджетах до его появления. Я думаю, QMainWindow.show рекурсивно вызывает метод для всех своих детей. Поэтому просто добавьте text.show() в конец функции new_text, и он работает.

Смежные вопросы