标签: qtpy

为什么某些 Python 包名称与其导入名称不同?

一些包是使用与 PyPI 上包的名称不同的字符串导入的,例如:

$ pip list | grep -i "yaml\|qt"  
PyYAML      3.13               
QtPy        1.5.2
Run Code Online (Sandbox Code Playgroud)
  • pyyaml (pip install pyyaml),但导入 yaml
  • qtpy (pip install qtpy),是的,导入是 qtpy 但包是 QtPy

一些工具无法处理,例如 sphinx:

$ make html
WARNING: autodoc: failed to import module 'wireshark' from module 'logcollector.plugins'; the following exception was raised:
No module named 'qtpy'
Run Code Online (Sandbox Code Playgroud)

我现在不记得了,但是对于扫描requirements.txt文件并打印yaml未安装包的警告的工具也是如此(但它是,它的名称是 pyyaml)。

python pip pyyaml python-sphinx qtpy

6
推荐指数
2
解决办法
1647
查看次数

Qt:停靠小部件如何获得其初始大小?

当小部件停靠时,我希望它改变方向并具有相对于停靠扩展方式的最小尺寸。

那是,

  • 左/右停靠 => 具有最小宽度的从上到下方向
  • 顶部/底部停靠 => 具有最小高度的从左到右方向

问题是,每当方向改变时,码头就会呈现出看似任意的宽度或高度。我无法找到一种方法来调整停靠小部件的大小/强制停靠时的特定大小。我尝试了无数种重写sizeHintminimumSizeHint调用adjustSize和摆弄的变体sizePolicy

如何确定初始d​​ock大小?


我的基本应用程序如下所示:

在此输入图像描述

该应用程序显示主要和次要信息以及相应的控件集。包含主要和次要内容的选项卡小部件被设置为中央小部件。包含相应仪表板中控件的 QStackedWidget 位于扩展坞中。当选项卡更改时,会显示相应的仪表板。下面的基本应用程序代码中给出了此操作的代码。

困难在于改变仪表板的方向会扰乱扩展坞的大小。

要调整仪表板方向,我能想到两个合理的解决方案:

  • 通过resizeEvent
  • 通过dockLocationChanged信号

调整方向通过resizeEvent

对我来说,这似乎是更好的选择。它为用户提供了最大的灵活性。如果他们不喜欢码头的方向,将其拖过特定限制将允许他们更改码头的方向。在这里我检查它的宽度是否大于高度。

    class MyDock(QtWidgets.QDockWidget):

        def __init__(self):

            super(MyDock, self).__init__()

        def resizeEvent(self, event):
            size = event.size()
            is_wide = size.width() > size.height()

            container_object = self.widget().currentWidget()

            if is_wide:
                container_object.setDirection(QtWidgets.QBoxLayout.LeftToRight)
            else:
                container_object.setDirection(QtWidgets.QBoxLayout.TopToBottom)
Run Code Online (Sandbox Code Playgroud)

下面的调整大小方法中给出了完整的代码。

改变方向dockLocationChange

由于调整大小事件始终发生,另一种方法可能是仅在停靠位置发生变化时才更改方向。为此,请将功能连接到信号dockLocationChanged并根据坞站调整方向。

    class MyDock(QtWidgets.QDockWidget):

        def __init__(self):

            super(MyDock, self).__init__()

            self.dockLocationChanged.connect(self.dock_location_changed)

        def dock_location_changed(self, area):
            top    = …
Run Code Online (Sandbox Code Playgroud)

python pyqt qdockwidget pyqt5 qtpy

6
推荐指数
1
解决办法
3680
查看次数

导入错误:无法导入名称 pyqtSignal?

问题背景:这是我之前的 PyQt 项目,我正在研究并尝试启动 GUI。我已经使用 Python 2.7 设置了一个 Anaconda 环境并使用了 PyQt4。错误是:-

File "gui/gui.py", line 26, in <module> from qtpy.QtCore import (Qt, QFileSystemWatcher, QSettings, pyqtSignal) ImportError: cannot import name pyqtSignal

代码 :-

enter #import qt
from qtpy import QtCore, QtWidgets, QtGui, PYQT4 #changed from PYQT5
from qtpy.QtCore import (Qt, QFileSystemWatcher, QSettings, pyqtSignal)
Run Code Online (Sandbox Code Playgroud)

即使在尽我所能尝试设置环境和其他方面之后,我也无法确定为什么仍然会弹出此错误。在 Mac 上尝试过,即使在 Ubuntu 上也会出现类似的错误。有谁知道如何解决这个问题?

python pyqt4 python-2.7 qtpy

3
推荐指数
1
解决办法
4821
查看次数

标签 统计

python ×3

qtpy ×3

pip ×1

pyqt ×1

pyqt4 ×1

pyqt5 ×1

python-2.7 ×1

python-sphinx ×1

pyyaml ×1

qdockwidget ×1