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

标签 python qt pyqt

也许我只是度过了糟糕的一天,但我似乎无法让它发挥作用。

我试图设置一个 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其父级的,以及 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/

相关文章:

python - 根据一组特定的单词拆分字符串

Python:如何从 JSON 文件中提取参数?

c++ - QGraphicsScene::fitInView() 仅适用于调整大小

python - 在不违反类封装的情况下在两个窗口之间进行通信

python - OpenCV 的密集光流 (Farneback) 函数的输出是什么?这如何用于在 Python 中构建光流图?

python - 在列表中找到第 n 个最小的数字?

c++ - Qt Creator 找不到 openCV 库

windows - 配置 Qt Creator 以使用 Git 的正确方法是什么?

Windows 上的 Python select.select() 错误 10022

python - QLineEdit 中的 title() 问题?