|
发表于 2024-7-14 17:29:57
|
显示全部楼层
你的问题是如何在前后台分离的两个不同的 `.py` 文件中,将 `QWidget` 绑定到 `QMainWindow` 上,但启动后只显示空白的 `QMainWindow` 界面,没有显示 `QWidget` 的内容。我们来一步步排查并解决这个问题。
### 原因分析
1. `zero_widgets_act.ZeroWidgetsAct(root)` 只是创建了一个 `ZeroWidgetsAct` 的实例,但没有将这个实例添加到 `ZeroWindowAct` 中。
2. `setupUi` 方法中,`buttonUI` 方法需要将按钮添加到合适的父容器中。
### 解决方案
我们需要确保 `ZeroWidgetsAct` 的实例被正确地嵌入到 `QMainWindow` 中。修改 `zero_wind_act.py` 和 `zero_widgets_act.py` 文件。
### 修改 `zero_wind_act.py`
在 `zero_wind_act.py` 中,我们需要将 `ZeroWidgetsAct` 实例添加为 `ZeroWindowAct` 的中央窗口小部件(central widget)。
- import sys
- import zero_widgets_act
- from PyQt5 import QtCore, QtGui, QtWidgets
- from PIL import Image
- sys.path.append(r'G:\\pythoncodes\\qt5')
- class ZeroWindowAct(QtWidgets.QMainWindow):
- def __init__(self):
- super(ZeroWindowAct, self).__init__()
- self.setupWidget()
- def setupWidget(self):
- self.resize(1080, 720)
- self.setWindowTitle('test0')
- self.widget = zero_widgets_act.ZeroWidgetsAct(self)
- self.setCentralWidget(self.widget) # 设置中央窗口小部件
- if __name__ == '__main__':
- app = QtWidgets.QApplication(sys.argv)
- root = ZeroWindowAct()
- root.show()
- sys.exit(app.exec_())
复制代码
### 修改 `zero_widgets_act.py`
确保 `ZeroWidgetsAct` 的实例是一个独立的 `QWidget` 并且其子控件(按钮等)被正确初始化。
- import sys
- import zero_widgets
- import time
- from PyQt5 import QtCore, QtGui, QtWidgets
- from PIL import Image
- sys.path.append(r'G:\\pythoncodes\\qt5')
- class ZeroWidgetsAct(zero_widgets.Ui_Dialog, QtWidgets.QWidget):
- def __init__(self, root=None):
- super(ZeroWidgetsAct, self).__init__(root) # 注意这里传递 root
- self.setupUi(self) # 传递 self 以便设置 UI
- self.test_button.clicked.connect(self.opn_btn_clicked)
- def opn_btn_clicked(self):
- print('yes')
- class Ui_Dialog(object):
- def setupUi(self, Dialog):
- Dialog.setObjectName("Dialog")
- Dialog.resize(400, 300)
- self.buttonUI(Dialog)
- def buttonUI(self, Dialog):
- self.test_button = QtWidgets.QPushButton(Dialog)
- self.test_button.setGeometry(QtCore.QRect(200, 200, 200, 50))
- self.test_button.setText('test')
复制代码
### 总结
- 在 `zero_wind_act.py` 中,将 `ZeroWidgetsAct` 实例设置为 `QMainWindow` 的中央小部件。
- 确保在 `zero_widgets_act.py` 中,`ZeroWidgetsAct` 的 UI 元素被正确初始化,并且其父容器被正确传递。
按照上述修改后,启动 `zero_wind_act.py` 应该能看到带有按钮的 `QMainWindow` 界面。如果还有其他问题,欢迎继续提问!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |
|