【问题标题】:PyQt4 to PyQt5 how?PyQt4 到 PyQt5 怎么样?
【发布时间】:2018-03-15 06:00:12
【问题描述】:

我的代码是使用 PyQt4 创建的,我想将其转换为 PyQt5。 我尝试了一些脚本来转换代码;但是,除了名字没有任何变化。 为了使代码与 PyQt5 一起工作,我需要手动更改什么?

这是我的代码的第一部分:

import sys
from pymaxwell import *
from numpy import *
from PyQt4 import QtGui, QtCore, uic
from PyQt4.QtGui import QMainWindow, QApplication
from PyQt4.QtCore import *
from PyQt4.phonon import Phonon
from ffmpy import FFmpeg
import os
import app_window_dark
import about

uifile = 'Ui/app_window_dark.ui'
aboutfile = 'Ui/about.ui'

Ui_MainWindow, QtBaseClass = uic.loadUiType(uifile)
Ui_Dialog= uic.loadUiType(uifile)

class About(QtGui.QMainWindow, about.Ui_Dialog):
    def __init__(self, parent=None):
        super(About, self).__init__()
        QtGui.QMainWindow.__init__(self, parent)
        Ui_Dialog.__init__(self)
        self.setWindowModality(QtCore.Qt.ApplicationModal)
        point = parent.rect().bottomRight()
        global_point = parent.mapToGlobal(point)
        self.move(global_point - QPoint(395, 265))
        self.setupUi(self)

class MyApp(QtGui.QMainWindow, app_window_dark.Ui_MainWindow):
    def __init__(self):
        super(MyApp, self).__init__()
        QtGui.QMainWindow.__init__(self)
        self.ui = Ui_MainWindow.__init__(self)
        self.setupUi(self)
        self.about_btn.clicked.connect(self.popup)

        #prev next
        self.btn_next.clicked.connect(self.renderSet)
        self.btn_prev.clicked.connect(self.renderSet)

还有这段代码:

if __name__ == "__main__":
    app = QApplication(sys.argv)
    #style = QApplication.setStyle('plastique')
    window = MyApp()
    window.setFixedSize(750, 320)
    window.show()
    sys.exit(app.exec_())

【问题讨论】:

  • 试试我的回答,我还回答了你的另一个问题,你没有告诉我是否为你工作。
  • 谢谢;我告诉你什么时候我会先尝试,当问题解决后我专注于其他工作

标签: python python-3.x pyqt pyqt4 pyqt5


【解决方案1】:

从 Qt4 到 Qt5 以及从 PyQt4 到 PyQt5 的主要变化是重新排列某些类,以便 Qt 项目具有可扩展性并生成更小的可执行文件。

QtGui 库分为 2 个子模块:QtGui 和 QtWidgets,其次是小部件,即 QMainWindow、QPushButton 等。这就是你必须做出的改变:

[...]
from PyQt5 import QtGui, QtCore, uic, QtWidgets
from PyQt5.QtWidgets import QMainWindow, QApplication
from PyQt5.QtCore import *
[...]

Ui_MainWindow, QtBaseClass = uic.loadUiType(uifile)
Ui_Dialog= uic.loadUiType(uifile)

class About(QtWidgets.QMainWindow, about.Ui_Dialog):
    def __init__(self, parent=None):
        QtWidgets.QMainWindow.__init__(self, parent)
        self.setupUi(self)
        self.setWindowModality(QtCore.Qt.ApplicationModal)
        point = parent.rect().bottomRight()
        global_point = parent.mapToGlobal(point)
        self.move(global_point - QPoint(395, 265))

class MyApp(QtWidgets.QMainWindow, app_window_dark.Ui_MainWindow):
    def __init__(self):
        QtWidgets.QMainWindow.__init__(self)
        self.setupUi(self)
        self.about_btn.clicked.connect(self.popup)

        #prev next
        self.btn_next.clicked.connect(self.renderSet)
        self.btn_prev.clicked.connect(self.renderSet)

注意:PyQt5 中不存在声子,必须使用 QtMultimedia,准确的解决方案可以在以下答案中找到:Phonon class not present in PyQt5

【讨论】:

  • 非常感谢;工作正常,但必须导入 QtWidgets : from PyQt5 import QtGui, QtWidgets, QtCore, uic
猜你喜欢
  • 2017-11-09
  • 2020-08-03
  • 1970-01-01
  • 2017-09-01
  • 2015-09-06
  • 2016-10-14
  • 2020-06-30
  • 1970-01-01
相关资源
最近更新 更多