2010-03-15 5 views
2

Je reçois entrée avec ce iciComment modifier la taille QInputDialog, PyQt

areaInput = QtGui.QInputDialog.getText(self, "Copy Area", "New Area Name:", 0) 

Cependant, je voudrais faire la boîte de dialogue plus grand, je l'ai essayé des choses telles que

QtGui.QInputDialog.resize(400, 400) 

Cependant, il dit "le premier argument doit être une classe QWidget" et je ne suis pas tout à fait sûr de ce que cela signifie ou comment y remédier. Merci.

Répondre

4

Cette erreur implique que vous n'appelez pas une méthode d'instance avec une instance.

QtGui.QInputDialog.getText() est une méthode statique qui ne renvoie pas d'instance QWidget, donc vous ne pouvez pas appeler resize() dessus.

Si vous voulez appeler resize(), vous devez créer votre propre QWidget (ou QDialog).

+0

Ok merci, donc il n'y a aucun moyen de redimensionner la petite pop-up avec juste simple ligne de code? – siege

+0

Non. Mais ce serait un exercice intéressant de voir si vous pouvez mettre la main sur le dialogue par la méthode 'findChildren ()' du parent (je ne suis pas sûr de ce que pourrait être l'équivalent de PyQt) et sur laquelle vous pourriez être capable d'appeler redimensionner. Mais puisque 'getText()' est un appel bloquant et que vous devrez appeler 'resize()' depuis le thread graphique, ce ne sera certainement pas trivial. –

2

J'ai eu le même problème. Principalement que la fenêtre était trop étroite horizontalement, rendant le champ de saisie de modification de texte petit. J'ai fini par mettre beaucoup d'espaces après le texte dans l'argument label. Ça a bien marché pour moi.

5

il est possible en faisant ceci:

dlg = QtGui.QInputDialog(self)     
dlg.setInputMode(QtGui.QInputDialog.TextInput) 
dlg.setLabelText("URL:")       
dlg.resize(500,100)        
ok = dlg.exec_()         
url = dlg.textValue() 
+1

Pourquoi n'est-ce pas la meilleure réponse? – ninhenzo64

Questions connexes