首页 > 解决方案 > 第二个对话框窗口上的按钮不起作用

问题描述

我在 QT 设计器中创建了两个窗口。第一个有两个按钮,每个按钮都调用对话框窗口。我刚刚开始为此编写代码,但是当我测试对话框窗口上的按钮时,我无法更进一步。我刚刚连接到一个调用打印(“测试”)的函数,只是为了看看 PB 工作,但它不起作用。我错过了什么?

看下面的主要代码:

from PyQt5 import QtWidgets
from Main_VIEW import Ui_MainWindow # this is the main window
from Dialog_sa import Ui_Dialog # dialog window
from Test4 import currentAccount,savingAccount # this has all functions and calculations
import sys

class ApplicationWindow(QtWidgets.QMainWindow,Ui_MainWindow,Ui_Dialog,QtWidgets.QDialog):
    def __init__(self):
        super(ApplicationWindow, self).__init__()
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        #self.diag_ui = Ui_Dialog()
        #self.diag_ui.setupUi(self)
        self.ui.pb_ca.clicked.connect(self.open_dialog_ca)


    def open_dialog_ca(self):
        #global dialog
        dialog = QtWidgets.QDialog()
        dialog.ui = Ui_Dialog()
        dialog.ui.setupUi(dialog)
        dialog.exec_()
        dialog.show()
        account = currentAccount()
        dialog.value_str = dialog.ui.le_b.text()
        dialog.ui.pb_d.clicked.connect(self.print_sel) # this is the line of code that doesn't work
    def print_sel(self):
        print("this app")


def main():
    app = QtWidgets.QApplication(sys.argv)
    application = ApplicationWindow()
    application.show()
    sys.exit(app.exec_())

if __name__ == "__main__":
    main()

这是 Dialog_sa

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'Dialog_sa.ui'
#
# Created by: PyQt5 UI code generator 5.15.1
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again.  Do not edit this file unless you know what you are doing.


from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_Dialog(object):
    def setupUi(self, Dialog):
        Dialog.setObjectName("Dialog")
        Dialog.resize(301, 142)
        self.buttonBox = QtWidgets.QDialogButtonBox(Dialog)
        self.buttonBox.setGeometry(QtCore.QRect(-70, 110, 341, 32))
        font = QtGui.QFont()
        font.setFamily("Calibri Light")
        font.setPointSize(10)
        font.setBold(False)
        font.setWeight(50)
        self.buttonBox.setFont(font)
        self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
        self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.Cancel|QtWidgets.QDialogButtonBox.Ok)
        self.buttonBox.setObjectName("buttonBox")
        self.le_b = QtWidgets.QLineEdit(Dialog)
        self.le_b.setGeometry(QtCore.QRect(50, 40, 131, 61))
        font = QtGui.QFont()
        font.setFamily("Calibri Light")
        font.setPointSize(18)
        self.le_b.setFont(font)
        self.le_b.setObjectName("le_b")
        self.label = QtWidgets.QLabel(Dialog)
        self.label.setGeometry(QtCore.QRect(50, 20, 47, 13))
        font = QtGui.QFont()
        font.setFamily("Calibri")
        font.setPointSize(11)
        font.setBold(True)
        font.setWeight(75)
        self.label.setFont(font)
        self.label.setObjectName("label")
        self.pb_w = QtWidgets.QPushButton(Dialog)
        self.pb_w.setGeometry(QtCore.QRect(190, 80, 75, 23))
        font = QtGui.QFont()
        font.setFamily("Calibri Light")
        font.setPointSize(10)
        font.setBold(False)
        font.setWeight(50)
        self.pb_w.setFont(font)
        self.pb_w.setObjectName("pb_w")
        self.pb_d = QtWidgets.QPushButton(Dialog)
        self.pb_d.setGeometry(QtCore.QRect(190, 40, 75, 23))
        font = QtGui.QFont()
        font.setFamily("Calibri Light")
        font.setPointSize(10)
        font.setBold(False)
        font.setWeight(50)
        self.pb_d.setFont(font)
        self.pb_d.setObjectName("pb_d")

        self.retranslateUi(Dialog)
        self.buttonBox.accepted.connect(Dialog.accept)
        self.buttonBox.rejected.connect(Dialog.reject)
        QtCore.QMetaObject.connectSlotsByName(Dialog)

    def retranslateUi(self, Dialog):
        _translate = QtCore.QCoreApplication.translate
        Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
        self.label.setText(_translate("Dialog", "Balance"))
        self.pb_w.setText(_translate("Dialog", "Withdraw"))
        self.pb_d.setText(_translate("Dialog", "Deposit"))


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    Dialog = QtWidgets.QDialog()
    ui = Ui_Dialog()
    ui.setupUi(Dialog)
    Dialog.show()
    sys.exit(app.exec_())

这是 MAIN_VIEW

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'Main_VIEW.ui'
#
# Created by: PyQt5 UI code generator 5.15.1
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again.  Do not edit this file unless you know what you are doing.


from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(259, 147)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.pb_ca = QtWidgets.QPushButton(self.centralwidget)
        self.pb_ca.setGeometry(QtCore.QRect(50, 10, 171, 41))
        font = QtGui.QFont()
        font.setFamily("Calibri Light")
        font.setPointSize(14)
        font.setBold(False)
        font.setWeight(50)
        self.pb_ca.setFont(font)
        self.pb_ca.setObjectName("pb_ca")
        self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_2.setGeometry(QtCore.QRect(50, 60, 171, 41))
        font = QtGui.QFont()
        font.setFamily("Calibri Light")
        font.setPointSize(14)
        font.setBold(False)
        font.setWeight(50)
        self.pushButton_2.setFont(font)
        self.pushButton_2.setObjectName("pushButton_2")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 259, 21))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.pb_ca.setText(_translate("MainWindow", "Current Account"))
        self.pushButton_2.setText(_translate("MainWindow", "Saving Account"))


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    MainWindow = QtWidgets.QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())

标签: pythonpyqt

解决方案


推荐阅读