另一个GUI的方法在使用pyqt5时不起作用

2024-04-20 02:02:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我有菜单_尤塔玛.py在菜单中有用户界面_用户界面(从qt designer转换结果)和rekam_mhs.py公司在rekam\u mhs有用户界面_用户界面. 你知道吗

菜单的源代码_尤塔玛.py你知道吗

import sys
from PyQt5 import QtCore, QtGui, QtWidgets
from menu_utama_ui import  Ui_Form
from rekam_mhs import rekam_mhs_form

class Main_Program(Ui_Form):
    def __init__(self,dialog):
        rekam_mhs_form.__init__(self)
        self.setupUi(dialog)

        #Connect "add" button with a custom function
        self.btnMhs.clicked.connect(self.fungsiMahasiswa)

    def fungsiMahasiswa(self):
        dialog = QtWidgets.QDialog()
        dialog.ui = rekam_mhs_form() #call rekam_mhs.py
        dialog.ui.setupUi(dialog)
        dialog.exec_()

if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    dialog = QtWidgets.QDialog()

    prog = Main_Program(dialog)

    dialog.show()
    sys.exit(app.exec_())

这里有一些源代码在rekam_mhs.py公司你知道吗

import sys
import database as db

from PyQt5 import QtCore, QtGui, QtWidgets, uic
from rekam_mhs_ui import  rekam_mhs_form
from model import mahasiswa

class rekam_mhs_main(rekam_mhs_form):

    def __init__(self,dialog):
        rekam_mhs_form.__init__(self)
        self.setupUi(dialog)
        self.btnGetData.clicked.connect(self.fungsiPushButton)  #problem

        #Connect "add" button with a custom function

    def fungsiGetData(self): 
        #To call some data from database
        txt = self.lineEdit.text()
        res = db.Database().select_NIM(txt)
        self.lineEdit_2.setText(""+res.nama)
        self.lineEdit_4.setText(""+res.kelas)
        self.lineEdit_3.setText(""+res.prodi)

if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    dialog = QtWidgets.QDialog()
    prog = rekam_mhs_main(dialog)
    dialog.show()
    sys.exit(app.exec_())

当我跑“Python3”的时候_mhs.py公司”然后单击按钮(btnGetData),方法被调用(fungsiGetData)并执行。你知道吗

当我运行“Python3”菜单时_尤塔玛.py”然后单击按钮(btnMhs)调用rekam_mhs.py公司,会显示GUI,但当我单击btnGetData时,不会执行方法(fungsiGetData)。这种情况有点像在单击按钮时没有方法。你知道吗

我错过了什么?我这样调用另一个GUI有错吗?我搜索了一些教程,但使用qt4而不是qt5。你知道吗


Tags: frompyimportselfformuidefsys
1条回答
网友
1楼 · 发布于 2024-04-20 02:02:49

对于您提供的代码,我很确定问题出在fungsimahasiswa()函数中。您将调用setupUi()函数两次(在rekam_mhs_main构造函数内部,然后在fungsimahasiswa()内部)。你知道吗

您正在构造函数中定义信号槽self.btnGetData.clicked.connect(self.fungsiPushButton),但立即在fungsimahasiswa()中调用setupUi()。这将导致创建一个新的self.btnGetData。那么这个新按钮就没有信号槽了。你知道吗

这就是为什么我认为fungsimahasiswa()应该是:

def fungsiMahasiswa(self):
    dialog = QtWidgets.QDialog()
    dialog.ui = rekam_mhs_form(dialog)
    dialog.exec_()

相关问题 更多 >