PyQt4 到 PyQt5 怎么样?
Posted
技术标签:
【中文标题】PyQt4 到 PyQt5 怎么样?【英文标题】:PyQt4 to PyQt5 how? 【发布时间】:2017-10-03 23:09:54 【问题描述】:我的代码是使用 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_())
【问题讨论】:
试试我的回答,我还回答了你的另一个问题,你没有告诉我是否为你工作。 谢谢;我告诉你什么时候我会先尝试,当问题解决后我专注于其他工作 【参考方案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以上是关于PyQt4 到 PyQt5 怎么样?的主要内容,如果未能解决你的问题,请参考以下文章