gpt4 book ai didi

python - setGeometry() 在 addWidget() 问题之后

转载 作者:太空宇宙 更新时间:2023-11-04 01:31:47 25 4
gpt4 key购买 nike

在将子 QWidget 添加到父 QWidget 后,我​​无法立即设置它的尺寸。问题是它根本没有设置几何图形:

from PyQt4 import QtCore, QtGui

class MyWidget(QtGui.QWidget):

def __init__(self):

super(MyWidget, self).__init__()

self.initUI()


def initUI(self):

# setting up parent QWidget
self.setMinimumSize(256, 256)
self.setMaximumSize(256, 256)
self.GL = QtGui.QGridLayout(self)
self.GL.setMargin(0)

# setting up child QWidget
self.GL.myWidget2 = QtGui.QFrame()
self.GL.myWidget2.setMinimumSize(128, 128)
self.GL.myWidget2.setMaximumSize(128, 128)
self.GL.myWidget2.setStyleSheet("background: orange")

# attaching child to parent
self.GL.addWidget(self.GL.myWidget2)

# trying to reposition child in parent's local space
self.GL.myWidget2.setGeometry(QtCore.QRect(0, 128, self.width(), self.height()))



if __name__ == '__main__':
app = QtGui.QApplication(sys.argv)
widget = MyWidget()
widget.show()
app.exec_()

添加一个在短暂延迟后设置几何的计时器确实有效...(将 self.GL.myWidget2.setGeometry([...]) 替换为):

        timer = QtCore.QTimer()
timer.singleShot(10, self.updatePosition)

def updatePosition(self):

self.GL.myWidget2.setGeometry(QtCore.QRect(0, 128, self.width(), self.height()))

...所以我怀疑 addWidget(...) 方法正在执行回调,例如在主线程已经通过 self.GL.myWidget2.setGeometry([...]) 行时在其默认位置重绘小部件。

虽然这纯粹是推测,但如果能深入了解 addWidget() 如何影响后续编码器或执行时间,我们将不胜感激!

最佳答案

如果您想手动定位小部件,则不需要布局:

#!/usr/bin/env python
#-*- coding:utf-8 -*-

from PyQt4.QtCore import *
from PyQt4.QtGui import *

class orange(QWidget):
def __init__(self, parent=None):
super(orange, self).__init__(parent)

self.setMinimumSize(256, 256)
self.setMaximumSize(256, 256)

self.frame = QFrame(self)
self.frame.setMinimumSize(128, 128)
self.frame.setMaximumSize(128, 128)
self.frame.setGeometry(QRect(0, 128, self.width(), self.height()))
self.frame.setStyleSheet("background: orange")

if __name__ == "__main__":
import sys

app = QApplication(sys.argv)
main = orange()
main.show()
sys.exit(app.exec_())

关于python - setGeometry() 在 addWidget() 问题之后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13509183/

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