1

メインウィンドウの任意の場所にQTextEditを表示したい。以下は私の最初の試みです。うまくいきません。ウィンドウを表示する前にテキスト編集を作成すると、テキスト編集は表示されますが、ウィンドウを表示した後にテキスト編集を作成すると、テキスト編集は表示されません。どうしたの?後で作成したものを表示するにはどうすればよいですか?

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

1 に答える 1

1

あ、わかった。ウィジェットが表示される前に、各ウィジェットで show を呼び出す必要があります。QMainWindow.show は、そのすべての子のメソッドを再帰的に呼び出すと思います。したがって、 new_text 関数の最後に text.show() を追加するだけで機能します。

于 2009-10-13T02:32:08.217 に答える