关于python:如何将此代码从PyQt4转换为PyQt5

How to translate this code from PyQt4 to PyQt5

我在PYGT是一个完全的新手程序员。我读过关于PYGT4的书,但是现在我们有了PYGT5,我不能从书中运行我的示例。

例如,这是你能从书中看到的第一个例子(最简单的)。

1
from PyQt5 import QtCore, QtGui

但它在书里

1
from PyQt4 import QtCore, QtGui

但我写Pyqt5是因为我只有Pyqt5

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# -*- 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_())

错误:attributeError:模块"pyqt5.qtgui"没有属性"qapplication"

我试图找到解决方案:我试图运行此代码。不工作。我的程序工作,但我不能关闭按钮"关闭窗口"

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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_())


要关闭窗口,必须将按钮单击的信号连接到窗口的关闭功能。

1
btnQuit.clicked.connect(window.close)

整个代码将是:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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_())

小心未使用的进口产品,您应该使用

1
from PyQt5 import QtWidgets

QtWidgets.QApplication代替QApplication,用QtWidgets.QLabel代替QLabel等。

请记住,自从Pyqt5:description以来,信号已经改变了样式。