Мне нужно знать, как можно сделать всплывающее диалоговое окно, когда пользователь нажимает кнопку.Отображение всплывающих окон в Python (PyQt4)
Я относительно новичок и для Python, и для PyQt/QtDesigner. Я использую их только около месяца, но я думаю, что у меня есть хорошее понимание.
Вот что у меня есть: Главное диалоговое окно (которое является основной частью приложения), которое я разработал в QtDesigner. Я преобразовал .ui в .py, используя pyuic4easy.
Вот что я хочу сделать: создать новое диалоговое окно в QtDesigner и как-то заставить его всплывать, когда пользователь нажимает кнопку в первом (основном) диалоговом окне.
Вот код для моего основного диалога:
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_())
Так как вы можете видеть, я подключил первую кнопку метода под названием «всплывающее окно», которое должно быть заполнено с кодом, чтобы сделать мое второе окно всплывает. Как мне это сделать? Помните, что я уже разработал свое второе диалоговое окно в QtDesigner, и мне не нужно создавать новый.
Спасибо за помощь!
Вы забыли держать когда вы показываете() 'диалог. – ekhumoro
Ах, право. Исправлена. Спасибо – Avaris
Спасибо Avaris! Мне удалось создать всплывающее окно, но оно имеет то же содержимое, что и диалоговое окно, которое появилось. Как это исправить? Кроме того, могу ли я создать недавно всплывающее окно в PyQt, а вместо этого включить мой код? Это то, что мой код выглядит следующим образом, для нового диалога: класс 'MyPopUp (QtGui.QDialog): Защиту __init __ (я, родитель = None): QtGui.QDialog .__ INIT __ (я, родитель) самостоятельно. ui = Ui_Dialog() self.ui.setupUi (self) ' – user1179452