L'affichage de fenêtres pop-up en Python (PyQt4)
J'ai besoin de savoir comment être en mesure de faire une boîte de dialogue pop-up lorsqu'un utilisateur clique sur un bouton.
Je suis relativement nouveau à Python et PyQt/QtDesigner. Je n'ai utilisé pendant environ un mois, mais je pense avoir une bonne compréhension.
Voici ce que j'ai: Une boîte de dialogue principale (qui est la partie principale de l'application), j'ai conçu dans QtDesigner. J'ai converti le .l'interface utilisateur .py à l'aide de pyuic4easy.
Voici ce que je veux faire: la conception d'une nouvelle boîte de dialogue dans le QtDesigner et en quelque sorte de faire apparaître lorsqu'un utilisateur clique sur un bouton sur la première (principale) de dialogue.
Voici le code de mon dialogue principale:
import sys
from PyQt4.QtCore import *
from loginScreen import *
class MyForm(QtGui.QDialog):
def __init__(self, parent=None):
QtGui.QWidget.__init__(self, parent)
self.ui = Ui_Dialog()
self.ui.setupUi(self)
QtCore.QObject.connect(self.ui.pushButton, QtCore.SIGNAL('clicked()'), self.popup)
...
... Some functions ...
def popup(self):
#Pop-up the new dialog
if __name__ == "__main__":
app = QtGui.QApplication(sys.argv)
myapp= MyForm()
myapp.show()
sys.exit(app.exec_())
Donc, comme vous pouvez le voir, j'ai connecté le premier bouton à une méthode nommée 'popup', qui doit être rempli avec un code pour faire mon deuxième fenêtre pop-up. Comment dois-je faire? Rappelez-vous que j'ai déjà conçu ma deuxième boîte de dialogue dans QtDesigner, et je n'ai pas besoin d'en créer un nouveau.
Merci pour toute l'aide!
OriginalL'auteur user1179452 | 2012-01-31
Vous devez vous connecter pour publier un commentaire.
Un peu de la même manière que vous le faites pour votre fenêtre principale (
MyForm
).Comme d'habitude, vous écrivez une classe wrapper pour votre QtDesigner code pour la deuxième boîte de dialogue (comme vous l'avez fait avec
MyForm
). Appelons ça de laMyPopupDialog
. Puis dans votrepopup
méthode, vous créez une instance, puis montrer votre instance avec soitexec_()
oushow()
en fonction de si vous voulez un dialogue modale ou non modale. (Si vous n'êtes pas familier avec Modal/non Modale concept, vous pouvez consulter la de la documentation.)Donc l'ensemble de la chose pourrait ressembler à ceci (avec un couple de modifications):
show()
la boîte de dialogue.Ah, à droite. Fixe. Merci
Grâce Avaris! J'ai été en mesure de faire de la pop-up display, mais il a le même contenu que la boîte de dialogue qui l'a déclenché. Comment puis-je régler ce problème? Aussi, puis-je concevoir le nouveau remonté la fenêtre en PyQt, et d'avoir mon code de la pop que l'on place à la place? C'est ce que mon code ressemble, pour la nouvelle boîte de dialogue:
class MyPopUp(QtGui.QDialog): def __init__(self, parent = None): QtGui.QDialog.__init__(self, parent) self.ui = Ui_Dialog() self.ui.setupUi(self)
Ah, jamais l'esprit. J'ai enfin compris comment tout fonctionne, et j'ai répondu à ma propre question que j'ai posté dans les commentaires. Merci pour votre aide!
OriginalL'auteur Avaris