Python qt 一个类里调用两个ui文件
时间: 2023-07-16 18:16:24 浏览: 173
在 PyQt 中,可以使用 `QUiLoader` 类来加载一个 UI 文件,并将其转换为一个 `QWidget` 对象。因此,要在一个类中调用两个 UI 文件,可以按照以下步骤进行:
1. 导入 `QtCore` 和 `QtGui` 模块以及 `QUiLoader` 类:
```
from PyQt5 import QtCore, QtGui, QtWidgets, uic
from PyQt5.QtUiTools import QUiLoader
```
2. 定义一个类,并在该类的初始化方法中加载两个 UI 文件,并将它们分别赋值给两个实例变量:
```
class MyWidget(QtWidgets.QWidget):
def __init__(self):
super().__init__()
# 加载第一个 UI 文件
loader = QUiLoader()
ui_file_1 = QtCore.QFile("file1.ui")
ui_file_1.open(QtCore.QFile.ReadOnly)
self.ui_1 = loader.load(ui_file_1, self)
ui_file_1.close()
# 加载第二个 UI 文件
ui_file_2 = QtCore.QFile("file2.ui")
ui_file_2.open(QtCore.QFile.ReadOnly)
self.ui_2 = loader.load(ui_file_2, self)
ui_file_2.close()
```
3. 在需要的时候,通过 `self.ui_1` 和 `self.ui_2` 访问两个 UI 文件中的控件。
完整代码示例:
```
from PyQt5 import QtCore, QtGui, QtWidgets, uic
from PyQt5.QtUiTools import QUiLoader
class MyWidget(QtWidgets.QWidget):
def __init__(self):
super().__init__()
# 加载第一个 UI 文件
loader = QUiLoader()
ui_file_1 = QtCore.QFile("file1.ui")
ui_file_1.open(QtCore.QFile.ReadOnly)
self.ui_1 = loader.load(ui_file_1, self)
ui_file_1.close()
# 加载第二个 UI 文件
ui_file_2 = QtCore.QFile("file2.ui")
ui_file_2.open(QtCore.QFile.ReadOnly)
self.ui_2 = loader.load(ui_file_2, self)
ui_file_2.close()
# 在需要的时候,通过 self.ui_1 和 self.ui_2 访问两个 UI 文件中的控件
self.ui_1.pushButton_1.clicked.connect(self.on_pushbutton_1_clicked)
self.ui_2.pushButton_2.clicked.connect(self.on_pushbutton_2_clicked)
def on_pushbutton_1_clicked(self):
print("Button 1 clicked")
def on_pushbutton_2_clicked(self):
print("Button 2 clicked")
if __name__ == "__main__":
app = QtWidgets.QApplication([])
widget = MyWidget()
widget.show()
app.exec_()
```
在上面的代码中,第一个 UI 文件中的 pushButton_1 控件与 `on_pushbutton_1_clicked` 方法关联,第二个 UI 文件中的 pushButton_2 控件与 `on_pushbutton_2_clicked` 方法关联。当这两个按钮被点击时,将会打印相应的信息。
阅读全文