如何将此代码从 PyQt4 转换为 PyQt5 [英] How to translate this code from PyQt4 to PyQt5
问题描述
我是一个完整的 PyGt 新手程序员.我已经阅读了关于 PyGt4 的书,但现在我们有了 PyGt5,我无法运行书中的示例.
例如,这是书中的第一个例子(最简单的)你可以看到
from PyQt5 import QtCore, QtGui
但它在书中
from PyQt4 import QtCore, QtGui
但是我写了 PyQt5 因为我只有 PyQt5
# -*- 编码:utf-8 -*-从 PyQt5 导入 QtCore、QtGui导入系统app = QtGui.QApplication(sys.argv)窗口 = QtGui.QWidget()window.setWindowTitle("PyQt 中的第一个程序")window.resize(300, 70)label = QtGui.QLabel("<center>Hello, world!</center>")btnQuit = QtGui.QPushButton("&关闭窗口")vbox = QtGui.QVBoxLayout()vbox.addWidget(标签)vbox.addWidget(btnQuit)window.setLayout(vbox)QtCore.QObject.connect(btnQuit, QtCore.SIGNAL("clicked()"),QtGui.qApp, QtCore.SLOT("quit()"))window.show()sys.exit(app.exec_())
错误:AttributeError:模块'PyQt5.QtGui'没有属性'QApplication'
我试图寻找解决方案:我试图运行这段代码.不起作用.我的程序可以运行,但我无法关闭按钮关闭窗口"
from PyQt5.QtWidgets import QApplication, QWidget从 PyQt5 导入 QtCore、QtGui从 PyQt5.QtCore 导入 QObject,pyqtSignal从 PyQt5.QtWidgets 导入 *导入系统app = QApplication(sys.argv)窗口 = QWidget()window.setWindowTitle("PyQt 中的第一个例子")window.resize(300, 70)label = QLabel("<center>Hello, world!</center>")btnQuit = QPushButton("&关闭窗口")vbox = QVBoxLayout()vbox.addWidget(标签)vbox.addWidget(btnQuit)window.setLayout(vbox)关闭 = pyqtSignal()range_changed = pyqtSignal(int, int, name='rangeChanged')valueChanged = pyqtSignal([int], ['QString'])window.show()sys.exit(app.exec_())
要关闭窗口,您必须将按钮单击信号连接到窗口的关闭功能
btnQuit.clicked.connect(window.close)
整个代码将是:
from PyQt5.QtWidgets import *从 PyQt5.QtCore 导入 pyqtSignal导入系统app = QApplication(sys.argv)窗口 = QWidget()window.setWindowTitle("PyQt 中的第一个例子")window.resize(300, 70)label = QLabel("<center>Hello, world!</center>")btnQuit = QPushButton("&关闭窗口")vbox = QVBoxLayout()vbox.addWidget(标签)vbox.addWidget(btnQuit)window.setLayout(vbox)btnQuit.clicked.connect(window.close)window.show()sys.exit(app.exec_())
小心你未使用的导入,你应该使用
from PyQt5 import QtWidgets
并将 QApplication
替换为 QtWidgets.QApplication
,将 QLabel
替换为 QtWidgets.QLabel
等...>
请记住,自 PyQt5 以来信号已经改变了样式:说明
I'm a complete novice programmer in PyGt. I have read the book about PyGt4 but now we have PyGt5 and I can not run my examples from book.
For example, this is the first example from the book (the easiest) You can see
from PyQt5 import QtCore, QtGui
but it's in the book
from PyQt4 import QtCore, QtGui
but I wrote PyQt5 because I have only PyQt5
# -*- coding: utf-8 -*-
from PyQt5 import QtCore, QtGui
import sys
app = QtGui.QApplication(sys.argv)
window = QtGui.QWidget()
window.setWindowTitle("The first program in PyQt")
window.resize(300, 70)
label = QtGui.QLabel("<center>Hello, world!</center>")
btnQuit = QtGui.QPushButton("&Close window")
vbox = QtGui.QVBoxLayout()
vbox.addWidget(label)
vbox.addWidget(btnQuit)
window.setLayout(vbox)
QtCore.QObject.connect(btnQuit, QtCore.SIGNAL("clicked()"),
QtGui.qApp, QtCore.SLOT("quit()"))
window.show()
sys.exit(app.exec_())
Error: AttributeError: module 'PyQt5.QtGui' has no attribute 'QApplication'
My attemp to find solution: I tried to run this code. Does not work. My program works but I can not close button "Close window"
from PyQt5.QtWidgets import QApplication, QWidget
from PyQt5 import QtCore, QtGui
from PyQt5.QtCore import QObject, pyqtSignal
from PyQt5.QtWidgets import *
import sys
app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle("The first example in PyQt")
window.resize(300, 70)
label = QLabel("<center>Hello, world!</center>")
btnQuit = QPushButton("&Close window")
vbox = QVBoxLayout()
vbox.addWidget(label)
vbox.addWidget(btnQuit)
window.setLayout(vbox)
closed = pyqtSignal()
range_changed = pyqtSignal(int, int, name='rangeChanged')
valueChanged = pyqtSignal([int], ['QString'])
window.show()
sys.exit(app.exec_())
To close your window you have to connect your button clicked signal to the close function of your window
btnQuit.clicked.connect(window.close)
The whole code would be :
from PyQt5.QtWidgets import *
from PyQt5.QtCore import pyqtSignal
import sys
app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle("The first example in PyQt")
window.resize(300, 70)
label = QLabel("<center>Hello, world!</center>")
btnQuit = QPushButton("&Close window")
vbox = QVBoxLayout()
vbox.addWidget(label)
vbox.addWidget(btnQuit)
window.setLayout(vbox)
btnQuit.clicked.connect(window.close)
window.show()
sys.exit(app.exec_())
Be careful for your unused imports, you should use
from PyQt5 import QtWidgets
and replace QApplication
by QtWidgets.QApplication
, QLabel
by QtWidgets.QLabel
etc...
Keep in mind that signals have changed style since PyQt5 : Description
这篇关于如何将此代码从 PyQt4 转换为 PyQt5的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!