- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在关注 Mark Summerfield 的 Rapid GUI Programming with Python and Qt
,它使用的是 PyQt4。我更喜欢使用 PyQt5,但我的机器上都有。我在书上的第二个习题,如下:
from __future__ import division
import sys
from math import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
class Form(QDialog):
def __init__(self, parent=None):
super(Form, self).__init__(parent)
self.browser = QTextBrowser()
self.lineedit = QLineEdit("Type an expression and press Enter")
self.lineedit.selectAll()
layout = QVBoxLayout()
layout.addWidget(self.browser)
layout.addWidget(self.lineedit)
self.setLayout(layout)
self.lineedit.setFocus()
# This line fails:
self.connect(self.lineedit, SIGNAL("returnPressed()"), self.updateUi)
self.setWindowTitle("Calculate")
def updateUi(self):
try:
text = unicode(self.lineedit.text())
self.browser.append("%s = <b>%s</b>" % (text, eval(text)))
except:
self.browser.append(
"<font color=red>%s is invalid!</font>" % text)
app = QApplication(sys.argv)
form = Form()
form.show()
app.exec_()
当我使用 PyQt4 运行脚本(并将 PyQt5.QtWidgets
与 PyQt4.QtGui
交换)时,它运行良好,但使用 PyQt5 时失败:
Traceback (most recent call last):
File "calculate.pyw", line 32, in <module>
form = Form()
File "calculate.pyw", line 19, in __init__
self.connect(self.lineedit, SIGNAL("returnProcessed()"), self.updateUi)
AttributeError: 'Form' object has no attribute 'connect'
我做了一些挖掘,但显然 there are no changes to connect所以我认为这可能是一个继承问题,但是当我在 PyQt4 和 PyQt5 中运行 dir(QDialog)
时 connect
只出现在 PyQt4 中(输出修剪,完整输出进一步向下):
Python 3.4.1 (default, Aug 24 2014, 21:32:40)
[GCC 4.2.1 Compatible Apple LLVM 5.1 (clang-503.0.40)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from PyQt5.QtWidgets import *
>>> dir(QDialog)
[..., 'colorCount', 'connectNotify', 'contentsMargins', ...]
Python 2.7.8 (default, Aug 24 2014, 21:26:19)
[GCC 4.2.1 Compatible Apple LLVM 5.1 (clang-503.0.40)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from PyQt4.QtGui import *
>>> dir(QDialog)
[..., 'colorCount', 'connect', 'connectNotify', 'contentsMargins', ...]
connect
方法存在于 PyQt4 中:
Python 2.7.8 (default, Aug 24 2014, 21:26:19)
[GCC 4.2.1 Compatible Apple LLVM 5.1 (clang-503.0.40)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from PyQt4.QtGui import *
>>> dir(QDialog)
['Accepted', 'DialogCode', 'DrawChildren', 'DrawWindowBackground',
'IgnoreMask', 'PaintDeviceMetric', 'PdmDepth', 'PdmDpiX', 'PdmDpiY',
'PdmHeight', 'PdmHeightMM', 'PdmNumColors', 'PdmPhysicalDpiX',
'PdmPhysicalDpiY', 'PdmWidth', 'PdmWidthMM', 'Rejected', 'RenderFlag',
'RenderFlags', '__class__', '__delattr__', '__dict__', '__doc__',
'__format__', '__getattr__', '__getattribute__', '__hash__', '__init__',
'__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__',
'__setattr__', '__sizeof__', '__str__', '__subclasshook__',
'__weakref__', 'accept', 'acceptDrops', 'accepted',
'accessibleDescription', 'accessibleName', 'actionEvent', 'actions',
'activateWindow', 'addAction', 'addActions', 'adjustSize',
'autoFillBackground', 'backgroundRole', 'baseSize', 'blockSignals',
'changeEvent', 'childAt', 'childEvent', 'children', 'childrenRect',
'childrenRegion', 'clearFocus', 'clearMask', 'close', 'closeEvent',
'colorCount', 'connect', 'connectNotify', 'contentsMargins',
'contentsRect', 'contextMenuEvent', 'contextMenuPolicy', 'create',
'cursor', 'customContextMenuRequested', 'customEvent', 'deleteLater',
'depth', 'destroy', 'destroyed', 'devType', 'disconnect',
'disconnectNotify', 'done', 'dragEnterEvent', 'dragLeaveEvent',
'dragMoveEvent', 'dropEvent', 'dumpObjectInfo', 'dumpObjectTree',
'dynamicPropertyNames', 'effectiveWinId', 'emit', 'enabledChange',
'ensurePolished', 'enterEvent', 'event', 'eventFilter', 'exec_',
'extension', 'find', 'findChild', 'findChildren', 'finished',
'focusInEvent', 'focusNextChild', 'focusNextPrevChild', 'focusOutEvent',
'focusPolicy', 'focusPreviousChild', 'focusProxy', 'focusWidget',
'font', 'fontChange', 'fontInfo', 'fontMetrics', 'foregroundRole',
'frameGeometry', 'frameSize', 'geometry', 'getContentsMargins',
'grabGesture', 'grabKeyboard', 'grabMouse', 'grabShortcut',
'graphicsEffect', 'graphicsProxyWidget', 'handle', 'hasFocus',
'hasMouseTracking', 'height', 'heightForWidth', 'heightMM', 'hide',
'hideEvent', 'inherits', 'inputContext', 'inputMethodEvent',
'inputMethodHints', 'inputMethodQuery', 'insertAction', 'insertActions',
'installEventFilter', 'isActiveWindow', 'isAncestorOf', 'isEnabled',
'isEnabledTo', 'isEnabledToTLW', 'isFullScreen', 'isHidden',
'isLeftToRight', 'isMaximized', 'isMinimized', 'isModal',
'isRightToLeft', 'isSizeGripEnabled', 'isTopLevel', 'isVisible',
'isVisibleTo', 'isWidgetType', 'isWindow', 'isWindowModified',
'keyPressEvent', 'keyReleaseEvent', 'keyboardGrabber', 'killTimer',
'languageChange', 'layout', 'layoutDirection', 'leaveEvent', 'locale',
'logicalDpiX', 'logicalDpiY', 'lower', 'mapFrom', 'mapFromGlobal',
'mapFromParent', 'mapTo', 'mapToGlobal', 'mapToParent', 'mask',
'maximumHeight', 'maximumSize', 'maximumWidth', 'metaObject', 'metric',
'minimumHeight', 'minimumSize', 'minimumSizeHint', 'minimumWidth',
'mouseDoubleClickEvent', 'mouseGrabber', 'mouseMoveEvent',
'mousePressEvent', 'mouseReleaseEvent', 'move', 'moveEvent',
'moveToThread', 'nativeParentWidget', 'nextInFocusChain',
'normalGeometry', 'numColors', 'objectName', 'open', 'orientation',
'overrideWindowFlags', 'overrideWindowState', 'paintEngine',
'paintEvent', 'paintingActive', 'palette', 'paletteChange', 'parent',
'parentWidget', 'physicalDpiX', 'physicalDpiY', 'pos',
'previousInFocusChain', 'property', 'pyqtConfigure', 'raise_',
'receivers', 'rect', 'reject', 'rejected', 'releaseKeyboard',
'releaseMouse', 'releaseShortcut', 'removeAction', 'removeEventFilter',
'render', 'repaint', 'resetInputContext', 'resize', 'resizeEvent',
'restoreGeometry', 'result', 'saveGeometry', 'scroll', 'sender',
'senderSignalIndex', 'setAcceptDrops', 'setAccessibleDescription',
'setAccessibleName', 'setAttribute', 'setAutoFillBackground',
'setBackgroundRole', 'setBaseSize', 'setContentsMargins',
'setContextMenuPolicy', 'setCursor', 'setDisabled', 'setEnabled',
'setExtension', 'setFixedHeight', 'setFixedSize', 'setFixedWidth',
'setFocus', 'setFocusPolicy', 'setFocusProxy', 'setFont',
'setForegroundRole', 'setGeometry', 'setGraphicsEffect', 'setHidden',
'setInputContext', 'setInputMethodHints', 'setLayout',
'setLayoutDirection', 'setLocale', 'setMask', 'setMaximumHeight',
'setMaximumSize', 'setMaximumWidth', 'setMinimumHeight',
'setMinimumSize', 'setMinimumWidth', 'setModal', 'setMouseTracking',
'setObjectName', 'setOrientation', 'setPalette', 'setParent',
'setProperty', 'setResult', 'setShortcutAutoRepeat',
'setShortcutEnabled', 'setShown', 'setSizeGripEnabled',
'setSizeIncrement', 'setSizePolicy', 'setStatusTip', 'setStyle',
'setStyleSheet', 'setTabOrder', 'setToolTip', 'setUpdatesEnabled',
'setVisible', 'setWhatsThis', 'setWindowFilePath', 'setWindowFlags',
'setWindowIcon', 'setWindowIconText', 'setWindowModality',
'setWindowModified', 'setWindowOpacity', 'setWindowRole',
'setWindowState', 'setWindowTitle', 'show', 'showEvent',
'showExtension', 'showFullScreen', 'showMaximized', 'showMinimized',
'showNormal', 'signalsBlocked', 'size', 'sizeHint', 'sizeIncrement',
'sizePolicy', 'stackUnder', 'startTimer', 'staticMetaObject',
'statusTip', 'style', 'styleSheet', 'tabletEvent', 'testAttribute',
'thread', 'timerEvent', 'toolTip', 'topLevelWidget', 'tr', 'trUtf8',
'underMouse', 'ungrabGesture', 'unsetCursor', 'unsetLayoutDirection',
'unsetLocale', 'update', 'updateGeometry', 'updateMicroFocus',
'updatesEnabled', 'visibleRegion', 'whatsThis', 'wheelEvent', 'width',
'widthMM', 'winId', 'window', 'windowActivationChange',
'windowFilePath', 'windowFlags', 'windowIcon', 'windowIconText',
'windowModality', 'windowOpacity', 'windowRole', 'windowState',
'windowTitle', 'windowType', 'x', 'y']
但不是 PyQt5:
Python 3.4.1 (default, Aug 24 2014, 21:32:40)
[GCC 4.2.1 Compatible Apple LLVM 5.1 (clang-503.0.40)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from PyQt5.QtWidgets import *
>>> dir(QDialog)
['Accepted', 'DialogCode', 'DrawChildren', 'DrawWindowBackground',
'IgnoreMask', 'PaintDeviceMetric', 'PdmDepth', 'PdmDevicePixelRatio',
'PdmDpiX', 'PdmDpiY', 'PdmHeight', 'PdmHeightMM', 'PdmNumColors',
'PdmPhysicalDpiX', 'PdmPhysicalDpiY', 'PdmWidth', 'PdmWidthMM',
'Rejected', 'RenderFlag', 'RenderFlags', '__class__', '__delattr__',
'__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__',
'__getattr__', '__getattribute__', '__gt__', '__hash__', '__init__',
'__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__',
'__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__',
'__subclasshook__', '__weakref__', 'accept', 'acceptDrops', 'accepted',
'accessibleDescription', 'accessibleName', 'actionEvent', 'actions',
'activateWindow', 'addAction', 'addActions', 'adjustSize',
'autoFillBackground', 'backgroundRole', 'baseSize', 'blockSignals',
'changeEvent', 'childAt', 'childEvent', 'children', 'childrenRect',
'childrenRegion', 'clearFocus', 'clearMask', 'close', 'closeEvent',
'colorCount', 'connectNotify', 'contentsMargins', 'contentsRect',
'contextMenuEvent', 'contextMenuPolicy', 'create',
'createWindowContainer', 'cursor', 'customContextMenuRequested',
'customEvent', 'deleteLater', 'depth', 'destroy', 'destroyed',
'devType', 'devicePixelRatio', 'disconnect', 'disconnectNotify', 'done',
'dragEnterEvent', 'dragLeaveEvent', 'dragMoveEvent', 'dropEvent',
'dumpObjectInfo', 'dumpObjectTree', 'dynamicPropertyNames',
'effectiveWinId', 'ensurePolished', 'enterEvent', 'event',
'eventFilter', 'exec', 'exec_', 'find', 'findChild', 'findChildren',
'finished', 'focusInEvent', 'focusNextChild', 'focusNextPrevChild',
'focusOutEvent', 'focusPolicy', 'focusPreviousChild', 'focusProxy',
'focusWidget', 'font', 'fontInfo', 'fontMetrics', 'foregroundRole',
'frameGeometry', 'frameSize', 'geometry', 'getContentsMargins', 'grab',
'grabGesture', 'grabKeyboard', 'grabMouse', 'grabShortcut',
'graphicsEffect', 'graphicsProxyWidget', 'hasFocus',
'hasHeightForWidth', 'hasMouseTracking', 'height', 'heightForWidth',
'heightMM', 'hide', 'hideEvent', 'inherits', 'initPainter',
'inputMethodEvent', 'inputMethodHints', 'inputMethodQuery',
'insertAction', 'insertActions', 'installEventFilter', 'isActiveWindow',
'isAncestorOf', 'isEnabled', 'isEnabledTo', 'isFullScreen', 'isHidden',
'isLeftToRight', 'isMaximized', 'isMinimized', 'isModal',
'isRightToLeft', 'isSignalConnected', 'isSizeGripEnabled', 'isVisible',
'isVisibleTo', 'isWidgetType', 'isWindow', 'isWindowModified',
'isWindowType', 'keyPressEvent', 'keyReleaseEvent', 'keyboardGrabber',
'killTimer', 'layout', 'layoutDirection', 'leaveEvent', 'locale',
'logicalDpiX', 'logicalDpiY', 'lower', 'mapFrom', 'mapFromGlobal',
'mapFromParent', 'mapTo', 'mapToGlobal', 'mapToParent', 'mask',
'maximumHeight', 'maximumSize', 'maximumWidth', 'metaObject', 'metric',
'minimumHeight', 'minimumSize', 'minimumSizeHint', 'minimumWidth',
'mouseDoubleClickEvent', 'mouseGrabber', 'mouseMoveEvent',
'mousePressEvent', 'mouseReleaseEvent', 'move', 'moveEvent',
'moveToThread', 'nativeEvent', 'nativeParentWidget', 'nextInFocusChain',
'normalGeometry', 'objectName', 'objectNameChanged', 'open',
'overrideWindowFlags', 'overrideWindowState', 'paintEngine',
'paintEvent', 'paintingActive', 'palette', 'parent', 'parentWidget',
'physicalDpiX', 'physicalDpiY', 'pos', 'previousInFocusChain',
'property', 'pyqtConfigure', 'raise_', 'receivers', 'rect',
'redirected', 'reject', 'rejected', 'releaseKeyboard', 'releaseMouse',
'releaseShortcut', 'removeAction', 'removeEventFilter', 'render',
'repaint', 'resize', 'resizeEvent', 'restoreGeometry', 'result',
'saveGeometry', 'scroll', 'sender', 'senderSignalIndex',
'setAcceptDrops', 'setAccessibleDescription', 'setAccessibleName',
'setAttribute', 'setAutoFillBackground', 'setBackgroundRole',
'setBaseSize', 'setContentsMargins', 'setContextMenuPolicy',
'setCursor', 'setDisabled', 'setEnabled', 'setFixedHeight',
'setFixedSize', 'setFixedWidth', 'setFocus', 'setFocusPolicy',
'setFocusProxy', 'setFont', 'setForegroundRole', 'setGeometry',
'setGraphicsEffect', 'setHidden', 'setInputMethodHints', 'setLayout',
'setLayoutDirection', 'setLocale', 'setMask', 'setMaximumHeight',
'setMaximumSize', 'setMaximumWidth', 'setMinimumHeight',
'setMinimumSize', 'setMinimumWidth', 'setModal', 'setMouseTracking',
'setObjectName', 'setPalette', 'setParent', 'setProperty', 'setResult',
'setShortcutAutoRepeat', 'setShortcutEnabled', 'setSizeGripEnabled',
'setSizeIncrement', 'setSizePolicy', 'setStatusTip', 'setStyle',
'setStyleSheet', 'setTabOrder', 'setToolTip', 'setToolTipDuration',
'setUpdatesEnabled', 'setVisible', 'setWhatsThis', 'setWindowFilePath',
'setWindowFlags', 'setWindowIcon', 'setWindowIconText',
'setWindowModality', 'setWindowModified', 'setWindowOpacity',
'setWindowRole', 'setWindowState', 'setWindowTitle', 'sharedPainter',
'show', 'showEvent', 'showFullScreen', 'showMaximized', 'showMinimized',
'showNormal', 'signalsBlocked', 'size', 'sizeHint', 'sizeIncrement',
'sizePolicy', 'stackUnder', 'startTimer', 'staticMetaObject',
'statusTip', 'style', 'styleSheet', 'tabletEvent', 'testAttribute',
'thread', 'timerEvent', 'toolTip', 'toolTipDuration', 'tr',
'underMouse', 'ungrabGesture', 'unsetCursor', 'unsetLayoutDirection',
'unsetLocale', 'update', 'updateGeometry', 'updateMicroFocus',
'updatesEnabled', 'visibleRegion', 'whatsThis', 'wheelEvent', 'width',
'widthMM', 'winId', 'window', 'windowFilePath', 'windowFlags',
'windowHandle', 'windowIcon', 'windowIconChanged', 'windowIconText',
'windowIconTextChanged', 'windowModality', 'windowOpacity',
'windowRole', 'windowState', 'windowTitle', 'windowTitleChanged',
'windowType', 'x', 'y']
我错过了什么?
最佳答案
您正在使用具有 not been implemented in PyQt5 的旧式信号和插槽.尝试使用 new-style signals and slots .
self.lineedit.returnPressed.connect(self.updateUi)
关于python - PyQt5 中的 connect() 方法在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27382053/
我想做的是让 JTextPane 在 JPanel 中占用尽可能多的空间。对于我使用的 UpdateInfoPanel: public class UpdateInfoPanel extends JP
我在 JPanel 中有一个 JTextArea,我想将其与 JScrollPane 一起使用。我正在使用 GridBagLayout。当我运行它时,框架似乎为 JScrollPane 腾出了空间,但
我想在 xcode 中实现以下功能。 我有一个 View Controller 。在这个 UIViewController 中,我有一个 UITabBar。它们下面是一个 UIView。将 UITab
有谁知道Firebird 2.5有没有类似于SQL中“STUFF”函数的功能? 我有一个包含父用户记录的表,另一个表包含与父相关的子用户记录。我希望能够提取用户拥有的“ROLES”的逗号分隔字符串,而
我想使用 JSON 作为 mirth channel 的输入和输出,例如详细信息保存在数据库中或创建 HL7 消息。 简而言之,输入为 JSON 解析它并输出为任何格式。 最佳答案 var objec
通常我会使用 R 并执行 merge.by,但这个文件似乎太大了,部门中的任何一台计算机都无法处理它! (任何从事遗传学工作的人的附加信息)本质上,插补似乎删除了 snp ID 的 rs 数字,我只剩
我有一个以前可能被问过的问题,但我很难找到正确的描述。我希望有人能帮助我。 在下面的代码中,我设置了varprice,我想添加javascript变量accu_id以通过rails在我的数据库中查找记
我有一个简单的 SVG 文件,在 Firefox 中可以正常查看 - 它的一些包装文本使用 foreignObject 包含一些 HTML - 文本包装在 div 中:
所以我正在为学校编写一个 Ruby 程序,如果某个值是 1 或 3,则将 bool 值更改为 true,如果是 0 或 2,则更改为 false。由于我有 Java 背景,所以我认为这段代码应该有效:
我做了什么: 我在这些账户之间创建了 VPC 对等连接 互联网网关也连接到每个 VPC 还配置了路由表(以允许来自双方的流量) 情况1: 当这两个 VPC 在同一个账户中时,我成功测试了从另一个 La
我有一个名为 contacts 的表: user_id contact_id 10294 10295 10294 10293 10293 10294 102
我正在使用 Magento 中的新模板。为避免重复代码,我想为每个产品预览使用相同的子模板。 特别是我做了这样一个展示: $products = Mage::getModel('catalog/pro
“for”是否总是检查协议(protocol)中定义的每个函数中第一个参数的类型? 编辑(改写): 当协议(protocol)方法只有一个参数时,根据该单个参数的类型(直接或任意)找到实现。当协议(p
我想从我的 PHP 代码中调用 JavaScript 函数。我通过使用以下方法实现了这一点: echo ' drawChart($id); '; 这工作正常,但我想从我的 PHP 代码中获取数据,我使
这个问题已经有答案了: Event binding on dynamically created elements? (23 个回答) 已关闭 5 年前。 我有一个动态表单,我想在其中附加一些其他 h
我正在尝试找到一种解决方案,以在 componentDidMount 中的映射项上使用 setState。 我正在使用 GraphQL连同 Gatsby返回许多 data 项目,但要求在特定的 pat
我在 ScrollView 中有一个 View 。只要用户按住该 View ,我想每 80 毫秒调用一次方法。这是我已经实现的: final Runnable vibrate = new Runnab
我用 jni 开发了一个 android 应用程序。我在 GetStringUTFChars 的 dvmDecodeIndirectRef 中得到了一个 dvmabort。我只中止了一次。 为什么会这
当我到达我的 Activity 时,我调用 FragmentPagerAdapter 来处理我的不同选项卡。在我的一个选项卡中,我想显示一个 RecyclerView,但他从未出现过,有了断点,我看到
当我按下 Activity 中的按钮时,会弹出一个 DialogFragment。在对话框 fragment 中,有一个看起来像普通 ListView 的 RecyclerView。 我想要的行为是当
我是一名优秀的程序员,十分优秀!