我想在任意位置的主窗口上显示一些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_()
答案 0 :(得分:1)
哦,我明白了。您必须在每个小部件出现之前调用show。我猜QMainWindow.show以递归方式为其所有子节点调用该方法。所以只需将text.show()添加到new_text函数的末尾即可。