PyQt: отображение QTextEdits через окно

Я хочу отобразить некоторые 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_()
13.10.2009 01:49:50
1 ОТВЕТ
РЕШЕНИЕ

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

1
13.10.2009 02:32:08