- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我将一个 PyQt 示例从 Web 复制到一个文件中,并在 PyCharm 中打开它。下面是代码:
from PyQt5.QtGui import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from math import *
class Calculator(QMainWindow):
def __init__(self, parent=None):
super().__init__(parent)
self.browser = QTextBrowser()
self.expression = QLineEdit()
self.expression.setPlaceholderText("Type an expression and press Enter.")
self.expression.selectAll()
layout = QVBoxLayout()
layout.addWidget(self.browser)
layout.addWidget(self.expression)
self.someWidget = QWidget()
self.someWidget.setLayout(layout)
self.setCentralWidget(self.someWidget)
self.expression.setFocus()
self.expression.returnPressed.connect(self.updateUi)
self.setWindowTitle("Calculator")
def updateUi(self):
try:
text = self.expression.text()
self.browser.append("%s = %s", (text, eval(text)))
except:
self.browser.append("<font color=red>Invalid Expression</font>")
def main():
import sys
app = QApplication(sys.argv)
window = Calculator()
window.show()
sys.exit(app.exec_())
main()
问题在于,即使不添加以下导入语句,代码也能正常运行:
from PyQt5.QtGui import *
from PyQt5.QtCore import *
from math import *
我在许多视频和书籍中都看到过这个示例。如果代码在没有上述语句的情况下也能正常工作,那么示例的作者为什么要编写这些语句。
最佳答案
从 PyQt4 到 PyQt5,很多东西都从 QtGui
、QtCore
转移到 QtWidgets
。要在 PyQt5 中编写简单的应用程序,您可能只需要 QtWidgets
。
我的猜测是该代码最初是为 PyQt4 编写的,并“适应”了 PyQt5,没有删除无用的导入。
正确的导入方法是将 PyQt5.QtWidgets 导入为 QtWidgets
(请参阅 Should wildcard import be avoided ? )。
代码变为:
class Calculator(QtWidgets.MainWindow):
def __init__(self, parent=None):
super().__init__(parent)
self.browser = QtWidgets.QTextBrowser()
self.expression = QtWidgets.QLineEdit()
...
关于python - 当没有必要时,为什么要在 PyQt 中导入 QtGui 和 QtCore?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33822350/
我创建了一个小型文本编辑器,用户可以通过将鼠标悬停在文本 block 上并旋转鼠标滚轮来增加字体大小。到目前为止,该部分正在发挥作用。我的问题是关于可视化字体大小的变化。 我想在鼠标位置画一个圆圈并在
我刚刚安装了 Mac OS X 10.8.3 和 Qt Creator 3、XCode 和 XCode 命令行工具。我正在尝试编译一个在另一台计算机上运行的项目,但每次我去“全部构建”时,我都会得到
请注意 redb.clicked[bool].connect(self.setColor) 行,为什么要添加 [bool] 部分?我试图删除该部分,将行修改为 redb.clicked.connect
在不同的 Windows 系统上打开相同的 QtGui 会导致标签大小或框架大小的不同显示,这让事情变得难看。我已经用 cx_freeze 编译了我的 pyqt4 应用程序到 .exe 文件,当我在另
我正在使用 Python 的日历小部件。我需要在单击按钮时调用小部件。情况是我找不到日历类中显示小部件本身的方法是什么。日历类取自这里: http://www.eurion.net/python-sn
我正在编写一个 QT 应用程序,我希望编译后的二进制文件与 GUI 和 CLI(未安装 X11)环境兼容。 以下是我使用 QApplication 或 QCoreApplication 的主要功能:
我对 Python 和 Qt 相当陌生,但我正在尝试使用一些动画图形元素创建一个 GUI。我可以制作一个简单的动画作品;在下面的代码中,class MyView 将在调用时工作,但 class Gra
这是我第一次使用 stackoverflow 来寻找问题的答案。我正在使用 QtGui.QTextEdit 来显示类似于下面的文本,并希望根据某些行是否包含某些文本来更改文本的颜色。 以 --[ 开头
我想知道是否有办法自定义进度条的颜色(QtGui.QProgressBar)。假设我们希望在条形图达到 100% 时将其变为绿色。 这是一个工作示例: import sys, time from Py
这个问题听起来很简单,但我一直在努力解决它。 我有 a.h, b.h, c.h, mainwindow.h 和a.cpp、b.cpp、c.cpp、main.cpp、mainwindow.cpp 在a、
我有一个 QtGui.QTableWidgetItem,我通过下面的 createRow 函数添加到表格中: def createRow(self, listA): rowNum = self
我正在为 Python 使用 PyQt,并且正在构建一个图形用户界面。几周前我遇到了一个问题,我在 gui 模块之外有一个函数修改 gui 中的小部件(高级进度条、更新字符串等),并且这些修改没有反射
当我创建实现 QWidget、QGraphicsView、QGraphicsItem 等的类时...我总是只包含 QtGui 而不是 QtWidget、QGraphicsView 等...这是不好的做
我安装了 Python 2.6,并且刚刚安装了为 Python 2.6 构建的 PyQt4(可在 http://www.riverbankcomputing.co.uk/software/pyqt/d
我安装了 Python 2.6,并且刚刚安装了为 Python 2.6 构建的 PyQt4(可在 http://www.riverbankcomputing.co.uk/software/pyqt/d
我在这个 windows 7 32 位上安装了 python3.3 x86(官方 python.org 安装程序) 然后从这里为 python3.3 windows x86 安装 PyQt4-4.10
如何从命令行爆炸 QSound? 在 PyQt4 下,playSound.py 可以像这样简单: QtGui.QSound('start.wav').play() 除非它在没有 .exec() 样式的
使用最新的 pyinstaller在 Windows 7 上制作独立的 exe (-F),运行 exe 时: ImportError: cannot import name QtGui 在 pyins
我正在尝试在 PyQt5 中绘制矩形。但有些事情总是不适合我。我指的是“QPainterPath 文档”,有这个例子: path = QPainterPath() path.addRect(20, 2
我正在Python2.7中使用Pyqt4构建用户界面,但是......当我单击“保存”按钮时,总是出现类型错误,即 TypeError: QFileDialog.getSaveFileName(QWi
我是一名优秀的程序员,十分优秀!