gpt4 book ai didi

python - 父级中的相对 QWidget 位置 - 不正确的 Y

转载 作者:太空宇宙 更新时间:2023-11-04 03:53:03 24 4
gpt4 key购买 nike

也许我只是今天过得很糟糕,但我似乎无法让它发挥作用。

我试图将一个小部件的位置设置为 float 在另一个小部件内,但它似乎总是偏移。

我的布局看起来像这样,我正在尝试在右上角的 canvas 中制作一个“ float ”小部件。

enter image description here

我用这个逻辑重新实现了 show 方法(也尝试了 showEvent):

def show(self):
pos = self.parent().mapToGlobal(self.parent().pos())
topright = self.parent().rect().topRight()
self.resize(QSize(self.geometry().width(), self.parent().geometry().size().height()))
newpos = (pos + topright) - QPoint(self.geometry().width(), 0)
self.move(newpos)
super(InfoDock, self).show()

这是结果:

enter image description here

这两个工具栏被添加到 canvas_page 使用:

self.canvas_page.layout().insertWidget(2, self.toolbar2)
self.canvas_page.layout().insertWidget(3, self.toolbar)

如果我删除这些调用,它会将小部件移高,但它似乎仍会偏移 settignsLabel_2 和 line_2 的大小

最佳答案

要为小部件设置绝对( float )位置,请重新实现 resizeEvent它的 parent ,和move()相对于该父级的小部件:

def resizeEvent(self, event):
# move to top-right corner
self.widget.move(self.width() - self.widget.width() - 1, 1)
super(Canvas, self).resizeEvent(event)

更新:

工作演示脚本:

from PyQt4 import QtCore, QtGui

class Window(QtGui.QMainWindow):
def __init__(self):
QtGui.QMainWindow.__init__(self)
toolbar = self.addToolBar('Toolbar')
toolbar.addAction('Action')
widget = QtGui.QWidget(self)
layout = QtGui.QVBoxLayout(widget)
self.canvas = Canvas(widget)
layout.addWidget(self.canvas)
self.setCentralWidget(widget)

class Canvas(QtGui.QGraphicsView):
def __init__(self, parent):
super(Canvas, self).__init__(parent)
self.widget = QtGui.QComboBox(self)

def resizeEvent(self, event):
self.widget.move(self.width() - self.widget.width() - 2, 2)
super(Canvas, self).resizeEvent(event)

if __name__ == '__main__':

import sys
app = QtGui.QApplication(sys.argv)
window = Window()
window.show()
window.setGeometry(500, 300, 200, 200)
sys.exit(app.exec_())

关于python - 父级中的相对 QWidget 位置 - 不正确的 Y,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20279185/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com