如何使用 pyqt5 和 qt 设计器从主对话框窗口打开第二个窗口

Posted

技术标签:

【中文标题】如何使用 pyqt5 和 qt 设计器从主对话框窗口打开第二个窗口【英文标题】:How to open second window from main dialog window with pyqt5 and qt designer 【发布时间】:2020-05-19 06:58:52 【问题描述】:

您好,我正在尝试开发一个插件。我使用 PyQt5 设计来创建 Gui。我想知道单击按钮后如何启动新窗口。

这是我使用 PyQt5 Designer 创建的界面。这是图片链接

单击激活按钮后,将打开发送激活密钥对话框,如上图所示。 单击确定按钮后,我需要打开一个新窗口,如图所示

这里是主要的 ui_dialog.py

from .gisedify_support_dialog_login import Ui_Dialog
FORM_CLASS, _ = uic.loadUiType(os.path.join(
os.path.dirname(__file__), 'gisedify_support_dialog_base.ui'))
class GisedifySupportDialog(QtWidgets.QDialog, FORM_CLASS):
  def __init__(self, parent=None):
    """Constructor."""
    super(GisedifySupportDialog, self).__init__(parent)
    # Set up the user interface from Designer through FORM_CLASS.
    # After self.setupUi() you can access any designer object by doing
    # self.<objectname>, and you can use autoconnect slots - see
    # http://qt-project.org/doc/qt-4.8/designer-using-a-ui-file.html
    # #widgets-and-dialogs-with-auto-connect
    self.setupUi(self)

def open_login_dialog(self):
    self.nd = Login_Dialog(self)
    self.nd.show()

class Login_Dialog(QtWidgets.QDialog,Ui_Dialog):
 def __init__(self, parent=None):
    super(Login_Dialog, self).__init__(parent)

这是我的 UI_Dialog 类

from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_Dialog(object):
def setupUi(self, Dialog):
    Dialog.setObjectName("Dialog")
    Dialog.resize(400, 300)
    ....
    ....
    self.pushButton.setObjectName("pushButton")


def retranslateUi(self, Dialog):
    _translate = QtCore.QCoreApplication.translate
    Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
    self.label.setText(_translate("Dialog", "Enter activation key"))
    self.pushButton.setText(_translate("Dialog", "Login"))

我正在使用

调用登录窗口
GisedifySupportDialog().open_login_dialog()

上面的代码什么也不做,也没有错误。当从主窗口单击确定按钮时,请帮助我打开登录窗口

【问题讨论】:

【参考方案1】:

试试这个:

def open_login_dialog(self):
    Dialog = QtWidgets.QDialog()
    ui = Ui_Dialog()
    ui.setupUi(Dialog)
    Dialog.exec_()

【讨论】:

我在新窗口中有一个名为“登录”的按钮正在打开,我需要如何在新窗口中触发按钮的点击事件?

以上是关于如何使用 pyqt5 和 qt 设计器从主对话框窗口打开第二个窗口的主要内容,如果未能解决你的问题,请参考以下文章

如何将值从主传递到对话框

QT 对话框的样式不正确

创建对话框实例并从主窗口调用它

gnome 上的 PyQt5 有奇怪的文件对话框

PyQt5数据库开发3 6 QSqlQuery完整实操案例图文详解

PyQt5——信号和槽初探