从 PyQt5 转换为 PyQt4 [关闭]
Posted
技术标签:
【中文标题】从 PyQt5 转换为 PyQt4 [关闭]【英文标题】:Convert from PyQt5 to PyQt4 [closed] 【发布时间】:2021-07-12 14:42:40 【问题描述】:兄弟姐妹们,我只是想知道是否有人可以帮我将这个程序转换为 PyQt4。我尽力了,但我做不到;,)。它是一个在 UI 上显示实时文本的基本程序。
这是程序:
import sys
import time
import random
from PyQt5 import QtWidgets, QtCore
class WorkerThread(QtCore.QObject):
signal = QtCore.pyqtSignal(int)
def __init__(self):
super().__init__()
@QtCore.pyqtSlot()
def run(self):
while True:
number = random.randint(1, 1000)
self.signal.emit(number)
time.sleep(1)
class WorkerLabel(QtWidgets.QLabel):
def __init__(self, parent):
super().__init__()
@QtCore.pyqtSlot(int)
def slot(self, i):
self.setText(str(i))
class UserInterface(QtWidgets.QWidget):
def __init__(self, parent):
super().__init__()
self.label = WorkerLabel(self)
self.layout = QtWidgets.QVBoxLayout()
self.layout.addWidget(self.label)
self.setLayout(self.layout)
class Main(QtWidgets.QMainWindow):
def __init__(self):
super().__init__()
self.ui = UserInterface(self)
self.setCentralWidget(self.ui)
self.worker = WorkerThread()
self.workerThread = QtCore.QThread() # Move the Worker object to the Thread object
self.workerThread.started.connect(self.worker.run) # Init worker run() at startup
self.worker.moveToThread(self.workerThread)
self.worker.signal.connect(self.ui.label.slot)
self.workerThread.start()
self.show()
if __name__== '__main__':
app = QtWidgets.QApplication([])
gui = Main()
sys.exit(app.exec_())
【问题讨论】:
将QtWidgets
更改为QtGui
请注意,***不是移植服务。你说“我尽力了”,但老实说,我看不到任何尝试,你只是提供了一个功能齐全的 PyQt5 程序。而且,坦率地说,考虑到将它移植到 PyQt4 需要什么,我认为你根本没有做任何事情。
谢谢兄弟的热心回复,我有这个程序的编辑版本,我现在将它添加。感谢您的评论!
【参考方案1】:
我不是 PyQt 方面的专家,但我用它为汽车、机器人、小型飞机开发遥测技术。多亏了 eyllanesc,它现在已解决并且运行良好。问题是 PyQt4 在 PyQt5 中使用 QtGui 而不是 QtWidgets
这里是示例代码:
import sys
import time
import random
from PyQt4 import QtGui, QtCore
class WorkerThread(QtCore.QObject):
signal = QtCore.pyqtSignal(int)
def __init__(self):
super().__init__()
@QtCore.pyqtSlot()
def run(self):
while True:
number = random.randint(1, 1000)
self.signal.emit(number)
time.sleep(1)
class WorkerLabel(QtGui.QLabel):
def __init__(self, parent):
super().__init__()
@QtCore.pyqtSlot(int)
def slot(self, i):
self.setText(str(i))
class UserInterface(QtGui.QWidget):
def __init__(self, parent):
super().__init__()
self.label = WorkerLabel(self)
self.layout = QtGui.QVBoxLayout()
self.layout.addWidget(self.label)
self.setLayout(self.layout)
class Main(QtGui.QMainWindow):
def __init__(self):
super().__init__()
self.ui = UserInterface(self)
self.setCentralWidget(self.ui)
self.worker = WorkerThread()
self.workerThread = QtCore.QThread() # Move the Worker object to the Thread object
self.workerThread.started.connect(self.worker.run) # Init worker run() at startup
self.worker.moveToThread(self.workerThread)
self.worker.signal.connect(self.ui.label.slot)
self.workerThread.start()
self.show()
if __name__== '__main__':
app = QtGui.QApplication([])
gui = Main()
sys.exit(app.exec_())
【讨论】:
以上是关于从 PyQt5 转换为 PyQt4 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章