【问题标题】:How to fix illegal target for variable annotation in PyQt5 [duplicate]如何修复 PyQt5 中变量注释的非法目标 [重复]
【发布时间】:2020-02-27 13:23:14
【问题描述】:

我正在关注一个在线教程(对于 PyQt4,我有 PyQt5)。我已经输入了确切的代码,但它返回了许多错误。其中之一是变量注释的非法目标。我不知道如何删除它,因为我只学习了非常基本的 python。

我尝试阅读文档,但无法理解如何解决此问题。


import sys 
from PyQt5 import QtGui

class Window(QtGui.QMainWindow):

    def__init__(self):
        super(Window, self).__init__()
        self.setGeometry(50, 50, 500, 300)
        self.setWindowTitle("PyQt Tuts!")
        self.setWindowIcon(QtGui.QIcon('Screenshot (967).png'))
        self.show()

    def home(self):
        btn = QtGui.QPushButton("Quit", self)
        btn.clicked.connect(QtCore.QCoreApplication.instance().quit)
        btn.resize(100, 100)
        btn.move(100, 100)
        self.show()

def run():
    app = QtGui.QApplication(sys.argv)
    GUI = Window()
    sys.exit(app.exec_())

run()

预期的输出将是一个终止程序的按钮。

【问题讨论】:

标签: python pyqt5


【解决方案1】:

@S 在评论中强调了核心问题。尼克。

最重要的是,Qt4 和 Qt5 之间的命名空间存在一些显着差异。我自己也跳了。

QtWidgets 模块是新的,现在包含了很多以前在 QtGui 中的东西。

我个人习惯较早发现此类问题,是按名称导入:

from PyQt5.QtWidgets import QApplication, ...

如果您使用此方法并移动了某些内容,您将收到 ImportError,其中详细说明了您请求的名称不存在。

特别是因为您使用的是为 PyQt4 编写的教程和使用 PyQt5,您可能会遇到一些差异。我的习惯是先查看 Qt5 文档——它比 PyQt5 文档详细得多,并且所有名称都保持不变。只是将一个 Qt 类名扔进谷歌往往会让你找到 Qt5 的正确页面。例如,搜索 QApplication 时,official Qt 13.2 QApplication docs 对我来说是最重要的结果。

【讨论】:

    猜你喜欢
    • 2018-12-20
    • 2015-01-26
    • 2019-07-11
    • 1970-01-01
    • 2014-04-23
    • 1970-01-01
    • 2021-08-03
    • 2019-11-19
    相关资源
    最近更新 更多