PyQt5实现QDockWidget仅在指定Frame内移动与调整
如何限制QDockWidget仅在指定QFrame内移动和调整大小?
我正在使用PyQt5开发应用,希望创建一个可在Frame内任意移动、调整大小的部件。参考相关方案后打算用QDockWidget,但需要限制它仅在主窗口的指定Frame内存在并移动。尝试setAllowedAreas()方法时,发现该方法仅支持Qt默认的DockWidgetArea枚举值,无法传入自定义Frame,多次尝试自定义区域均报错,求解决方法。
当前代码
#!/usr/local/bin/pydm from PyQt5.QtWidgets import QDockWidget from pydm import Display class Window(Display): ##Main window class. def __init__(self, args, macros): super(Window, self).__init__(None, args, macros, ui_filename="main.ui") self.pushButton.clicked.connect(self.createDock) def createDock(self): self.dock=QDockWidget() self.dock.raise_() self.dock.show()
说明:pydm是继承PyQt所有类的模块,可正常使用默认功能;main.ui为QtDesigner创建的带Frame和PushButton的部件窗口。
报错信息
报错1
Traceback (most recent call last): File "./main.py", line 16, in createDock self.dock.setAllowedAreas(self.frame) TypeError: setAllowedAreas(self, Union[Qt.DockWidgetAreas, Qt.DockWidgetArea]): argument 1 has unexpected type 'QFrame'
报错2
Traceback (most recent call last): File "./main.py", line 17, in createDock myArea = Qt.DockWidgetArea(self.frame) TypeError: int() argument must be a string, a bytes-like object or a number, not 'QFrame'
内容的提问来源于stack exchange,提问作者Marco Montevechi Filho
相关产品推荐
相关产品推荐

