2009-10-13 10 views
1

Je souhaite afficher certains QTextEdits sur ma fenêtre principale à des emplacements arbitraires. Voici ma première tentative. Ça ne marche pas vraiment. Si je crée les modifications de texte avant d'afficher la fenêtre, les modifications de texte apparaissent, mais si je les crée après avoir affiché la fenêtre, elles n'apparaissent pas. Qu'est-ce qui se passe avec ça? Comment puis-je faire apparaître ceux créés plus tard?PyQt: Affichage de QTextEdits sur la fenêtre

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

Répondre

1

Oh, je l'ai compris. Vous devez appeler show sur chaque widget avant qu'il n'apparaisse. Je suppose que QMainWindow.show appelle récursivement la méthode pour tous ses enfants. Il suffit donc d'ajouter text.show() à la fin de la fonction new_text et cela fonctionne.