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_()

person Jesse Aldridge    schedule 13.10.2009    source источник


Ответы (1)


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

person Jesse Aldridge    schedule 13.10.2009