在使用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_())