Отображение всплывающих окон в Python (PyQt4)
Мне нужно знать, как можно сделать всплывающее диалоговое окно, когда пользователь нажимает кнопку.
Я относительно новичок и для Python, и для PyQt / QtDesigner. Я использую их только около месяца, но я думаю, что у меня есть хорошее понимание.
- PyQt: нет ошибки msg (traceback) при выходе
- pyside connection Ошибка "RuntimeError: не удалось подключить сигнал нажал ()"
- Настройка кода виджета дизайнера Qt?
- Использование QTDesigner с PyQT и Python 2.6
- Связывание файла .ui с qtDesigner с python / pyqt?
Вот что у меня есть: основное диалоговое окно (которое является основной частью приложения), которое я разработал в 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_())
Итак, как вы можете видеть, я подключил первую кнопку к методу с именем «popup», который должен быть заполнен кодом, чтобы появилось второе окно. Как мне это сделать? Помните, что я уже разработал свое второе диалоговое окно в QtDesigner, и мне не нужно создавать новый.
Спасибо за помощь!
- QtDesigner & PySide: QTableWidget недоступен
- Дизайн MVC с QtDesigner и PySide
- Как конвертировать .ui в py в windows?
- Сигналы / слоты pyQt с QtDesigner
- использование функций python непосредственно в Qt-дизайнере как сигналы
One Solution collect form web for “Отображение всплывающих окон в Python (PyQt4)”
Итак, как вы можете видеть, я подключил первую кнопку к методу с именем «popup», который должен быть заполнен кодом, чтобы появилось второе окно. Как мне это сделать?
Совсем так же, как вы делаете это для своего главного окна ( MyForm
).
Как обычно, вы пишете класс-оболочку для своего кода QtDesigner для второго диалога (например, с MyForm
). Назовем это MyPopupDialog
. Затем в вашем popup
методе вы создаете экземпляр, а затем показываете свой экземпляр с помощью exec_()
или show()
зависимости от того, хотите ли вы модальный или немодальный диалог. (Если вы не знакомы с концепцией Modal / Modeless, вы можете обратиться к документации. )
Таким образом, общая вещь может выглядеть так (с несколькими модификациями):
# Necessary imports class MyPopupDialog(QtGui.QDialog): def __init__(self, parent=None): # Regular init stuff... # and other things you might want class MyForm(QtGui.QDialog): def __init__(self, parent=None): # Here, you should call the inherited class' init, which is QDialog QtGui.QDialog.__init__(self, parent) # Usual setup stuff self.ui = Ui_Dialog() self.ui.setupUi(self) # Use new style signal/slots self.ui.pushButton.clicked.connect(self.popup) # Other things... def popup(self): self.dialog = MyPopupDialog() # For Modal dialogs self.dialog.exec_() # Or for modeless dialogs # self.dialog.show() if __name__ == "__main__": app = QtGui.QApplication(sys.argv) myapp= MyForm() myapp.show() sys.exit(app.exec_())
- Qt не позволяет мне создать пункт меню, названный в честь моего приложения, со строками «О», «Предпочтения» или «Завершить?».
- Файл .py, который скомпилирован из файла .qrc (с использованием pyside-rcc), не работает
- Виджет pyside работает с threading.Thread class
- Лучший способ отображения журналов в pyqt?
- Python Win 3.6.0 x64 проблема, отсутствует qt designer exe после того, как pip3 установил pyqt5
- Qt Designer генерирует код на C ++
- QIcon.fromTheme не отображает значок в PyQt
- Доступ к элементам GUI вне класса GUI
- Ошибка использования FigureCanvasQTAgg в MatplotlibWidget pyqt5
- Как создать новые окна PyQt4 из существующего окна?