You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将给定的PyQt4代码转换为PyQt5?

PyQt4转PyQt5的转换方法及代码示例

没问题,我帮你把这段PyQt4代码转换成PyQt5版本,顺便拆解下关键的转换要点,方便你以后自己处理类似的代码迁移~

核心转换要点

  • 模块导入调整:PyQt5把PyQt4里QtGui中的大部分UI组件(比如QWidget、QFrame、布局类等)都移到了QtWidgets模块里,QtCore模块的核心功能(比如Qt.Horizontal这类枚举)保留不变。
  • 类继承与组件引用:所有原来从QtGui导入的UI类,现在都要改成从QtWidgets导入,比如QtGui.QWidget → QtWidgets.QWidget,QtGui.QHBoxLayout → QtWidgets.QHBoxLayout。
  • 其他细节:信号槽的语法在PyQt5里有小变化,但你的这段代码里没涉及到,所以暂时不用管。

转换后的完整PyQt5代码

我把你没写完的部分补全了(比如添加右侧面板、布局挂载、窗口初始化),完整代码如下:

import sys
from PyQt5 import QtWidgets, QtCore

class Example(QtWidgets.QWidget):
    def __init__(self):
        super(Example, self).__init__()
        self.initUI()

    def initUI(self):
        hbox = QtWidgets.QHBoxLayout(self)
        
        left = QtWidgets.QFrame(self)
        left.setFrameShape(QtWidgets.QFrame.StyledPanel)
        
        right = QtWidgets.QFrame(self)
        right.setFrameShape(QtWidgets.QFrame.StyledPanel)
        
        splitter = QtWidgets.QSplitter(QtCore.Qt.Horizontal)
        splitter.addWidget(left)
        splitter.addWidget(right)
        
        hbox.addWidget(splitter)
        self.setLayout(hbox)
        
        self.setGeometry(300, 300, 300, 200)
        self.setWindowTitle('QSplitter Example')
        self.show()

if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

简单说明

  • 你原来的代码里splitter.add...没写完,我默认是添加右侧的right面板,然后把分割器加入到水平布局里。
  • 最后加上了标准的PyQt5应用启动代码(QApplication实例化、窗口显示、事件循环启动),这部分在PyQt5里可以用app.exec()或兼容写法app.exec_()。

内容的提问来源于stack exchange,提问作者Adel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:32:32