【问题标题】:How to translate this code from PyQt4 to PyQt5如何将此代码从 PyQt4 转换为 PyQt5
【发布时间】:2017-04-14 03:15:39
【问题描述】:

我是 PyGt 中一个完全的新手程序员。我已经阅读了有关 PyGt4 的书,但现在我们有了 PyGt5,我无法从书中运行我的示例。

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

from PyQt5 import QtCore, QtGui 

书上写着

from PyQt4 import QtCore, QtGui 

但我写了 PyQt5,因为我只有 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_())

错误:AttributeError:模块“PyQt5.QtGui”没有属性“QApplication”

我正在尝试寻找解决方案: 我试图运行这段代码。不工作。我的程序可以运行,但我无法关闭“关闭窗口”按钮

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_())

【问题讨论】:

标签: python pyqt pyqt4 pyqt5


【解决方案1】:

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

btnQuit.clicked.connect(window.close)

整个代码是:

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_())

小心你未使用的导入,你应该使用

from PyQt5 import QtWidgets

QApplication 替换为QtWidgets.QApplication,将QLabel 替换为QtWidgets.QLabel 等...

请记住,自 PyQt5 以来信号已经改变了样式:Description

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-02-24
    • 2021-07-12
    • 2020-08-03
    • 2019-09-29
    • 2012-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多