一些包是使用与 PyPI 上包的名称不同的字符串导入的,例如:
$ pip list | grep -i "yaml\|qt"
PyYAML 3.13
QtPy 1.5.2
Run Code Online (Sandbox Code Playgroud)
一些工具无法处理,例如 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)。
当小部件停靠时,我希望它改变方向并具有相对于停靠扩展方式的最小尺寸。
那是,
问题是,每当方向改变时,码头就会呈现出看似任意的宽度或高度。我无法找到一种方法来调整停靠小部件的大小/强制停靠时的特定大小。我尝试了无数种重写sizeHint、minimumSizeHint调用adjustSize和摆弄的变体sizePolicy。
如何确定初始dock大小?
我的基本应用程序如下所示:
该应用程序显示主要和次要信息以及相应的控件集。包含主要和次要内容的选项卡小部件被设置为中央小部件。包含相应仪表板中控件的 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) 问题背景:这是我之前的 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 上也会出现类似的错误。有谁知道如何解决这个问题?