当前位置: 首页 > 工具软件 > loadUI > 使用案例 >

pyqt:使用uic.loadUI()的时候,无法使用鼠标事件或者其他事件

何昆
2023-12-01

问题描述

在使用pyqt过程中遇到无法使用鼠标事件的问题。
之前使用代码编写界面是不会出现这种问题,这次采用*.ui文件搭建的界面,导入ui文件后,出现无法触发鼠标事件的问题。
很明显,这是导入ui文件的方式不对。经过测试,可以如下解决该问题。

解决办法

使用uic.loadUiType()

from PyQt5 import QtWidgets, uic
import sys
 
form_class = uic.loadUiType('mainwindow.ui')[0]
class Ui(QtWidgets.QMainWindow, form_class):
    def __init__(self):
        super(Ui, self).__init__()
        self.setupUi(self)
 
 if __name__=='__main__':
	app = QtWidgets.QApplication(sys.argv)
	window = Ui()
	window.show()
	sys.exit(app.exec_())

或者用 uic.loadUi()

from PyQt5 import QtWidgets, uic
import sys
 
class Ui(QtWidgets.QMainWindow):
    def __init__(self):
        super(Ui, self).__init__()
        uic.loadUi('mainwindow.ui', self)
        # 有人是这么写,
        # self.ui = uic.loadUi('mainwindow.ui')
        # 这种写法虽然能正常运行ui,但会造成鼠标事件无法使用的问题
        # 因此,如果在界面中含有鼠标事件或其他事件的操作,不建议这种写法。
 
 if __name__=='__main__':
	app = QtWidgets.QApplication(sys.argv)
	window = Ui()
	window.show()
	sys.exit(app.exec_())
 类似资料: