森林KING 2023-08-18 10:57 采纳率: 0%
浏览 14

pyqt5 多界面实现ui和逻辑层分离

遇到的问题,使用pyqt5搭界面时,切换到分界面,但是分界面里面的按钮(btn_OpenImage.clicked)没有响应,分界面逻辑层已经单独运行过,没有问题,就是和主界面结合时候出问题,没有响应,各位帮忙看看,下面是主界面逻辑层和其中一个分界面逻辑层

主界面的逻辑文件:

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget, QFrame
import Form_0

from Form_1main import Form1Code   #这里增加了!!!!!!
from Form_2main import Form2Code   #这里增加了!!!!!!

class MainFormCode(QFrame, Form_0.Ui_Form):
    def __init__(self):
        super(MainFormCode, self).__init__()
        self.setupUi(self)


        self.pushButton_1.clicked.connect(self.display1)
        self.pushButton_2.clicked.connect(self.display2)


        self.ui1 = Form1Code() # 实例化第一个页面
        self.ui2 = Form2Code()  # 实例化第二个页面

        self.ui1.setupUi(self.page_1)  # 加载在第一个子控件上
        self.ui2.setupUi(self.page_2)  # 加载在第二个子控件上


    def display1(self):
        self.stackedWidget.setCurrentIndex(0)

    def display2(self):
        self.stackedWidget.setCurrentIndex(1)



if __name__ == '__main__':
    app = QApplication(sys.argv)
    md = MainFormCode()
    md.show()
    sys.exit(app.exec_())


第一个分界面逻辑文件:

from PyQt5.QtWidgets import QApplication, QMainWindow, QFileDialog, QLabel, QFrame, QWidget
from PyQt5.QtGui import QPixmap, QPainter, QPen, QImage
from PyQt5.QtCore import Qt, QRect
import Form_1
import cv2
import math
import numpy as np
import copy

class Form1Code(QFrame, Form_1.Ui_Form1):
    def __init__(self):
        super(Form1Code, self).__init__()
        self.setupUi(self)

        self.btn_OpenImage.clicked.connect(self.openImage)



    def openImage(self):
        files, _ = QFileDialog.getOpenFileName(self, '打开图片', './', "Images (*.png *.jpg *.bmp)")
        if files:
            self.img = cv2.imread(files)
            if self.img is not None:
                pixmap = self.cvToPixmap(self.img)
                self.lbl_ShowImage.setPixmap(pixmap)

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-08-18 12:07
    关注

    【以下回答由 GPT 生成】

    问题我理解的是你使用pyqt5搭建界面时,切换到分界面后,按钮没有响应。已经单独运行分界面逻辑层时,没有问题,只是和主界面结合时出现问题。以下是主界面逻辑层和其中一个分界面逻辑层的代码:

    主界面的逻辑文件:

    import sys
    from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget, QFrame
    import Form_0
    
    from Form_1main import Form1Code   # 这里增加了!!!!
    from Form_2main import Form2Code   # 这里增加了!!!!
    
    class MainFormCode(QFrame, Form_0.Ui_Form):
        def __init__(self):
            super(MainFormCode, self).__init__()
            self.setupUi(self)
    
            self.pushButton_1.clicked.connect(self.display1)
            self.pushButton_2.clicked.connect(self.display2)
    
            self.ui1 = Form1Code() # 实例化第一个页面
            self.ui2 = Form2Code()  # 实例化第二个页面
    
            self.ui1.setupUi(self.page_1)  # 加载在第一个子控件上
            self.ui2.setupUi(self.page_2)  # 加载在第二个子控件上
    
        def display1(self):
            self.stackedWidget.setCurrentIndex(0)
    
        def display2(self):
            self.stackedWidget.setCurrentIndex(1)
    
    
    if __name__ == '__main__':
        app = QApplication(sys.argv)
        md = MainFormCode()
        md.show()
        sys.exit(app.exec_())
    

    第一个分界面逻辑文件:

    from PyQt5.QtWidgets import QApplication, QMainWindow, QFileDialog, QLabel, QFrame, QWidget
    from PyQt5.QtGui import QPixmap, QPainter, QPen, QImage
    from PyQt5.QtCore import Qt, QRect
    import Form_1
    import cv2
    import math
    import numpy as np
    import copy
    
    class Form1Code(QFrame, Form_1.Ui_Form1):
        def __init__(self):
            super(Form1Code, self).__init__()
            self.setupUi(self)
    
            self.btn_OpenImage.clicked.connect(self.openImage)
    
        def openImage(self):
            files, _ = QFileDialog.getOpenFileName(self, '打开图片', './', "Images (*.png *.jpg *.bmp)")
            if files:
              # 处理打开图片的逻辑
    

    你遇到的问题是按钮 btn_OpenImage 在切换到分界面后没有响应。请确认以下几点: - 分界面的 Form_1 类是否正确连接到了UI文件 Form_1.ui。 - 分界面的 Form_1 类是否正确继承了 QFrameForm_1.Ui_Form1。 - 在打开图片的逻辑函数 openImage 中是否完成了图片处理的逻辑代码。

    请检查以上内容,如果问题仍存在,请提供更多的代码和错误信息以便我能更好地帮助您。


    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 8月18日

悬赏问题

  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
  • ¥15 TLE9879QXA40 电机驱动
  • ¥20 对于工程问题的非线性数学模型进行线性化
  • ¥15 Mirare PLUS 进行密钥认证?(详解)
  • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
  • ¥20 想用ollama做一个自己的AI数据库
  • ¥15 关于qualoth编辑及缝合服装领子的问题解决方案探寻
  • ¥15 请问怎么才能复现这样的图呀