- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
在将子 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/
在将子 QWidget 添加到父 QWidget 后,我无法立即设置它的尺寸。问题是它根本没有设置几何图形: from PyQt4 import QtCore, QtGui class MyWid
我查看了以下链接,但找不到解决我的问题的方法: Qt setGeometry: Unable to set geometry Unable to set geometry in Qt https://
我的环境如下: Qt 5.4,使用 -platform win32-msvc2013 -opengl desktop -no-icu -skip webkit 从源代码构建 Visual Studio
我正在尝试使用 qt 小部件覆盖 Maya 的事件 View 3d。 我有一个 Canvas 基类(一个透明的小部件),我可以在上面做一些绘画工作。它的父级是包装的 avtice 3d View 。一
我正在使用 PyQt5 开发一个非常简单的应用程序,用于显示和排序图像。我是 Python 和 Qt 的新手,特别是我遇到了一些问题。我试图在 QLabel 对象中显示 QPixmap 图像,并且它们
我想在这里创建类似的自定义布局:http://doc.qt.io/qt-5/qtwidgets-layouts-flowlayout-flowlayout-cpp.html 我想要一些方法将复选框放在
为什么? setGeometry: Unable to set geometry 22x22+320+145 on QWidgetWindow/'WidgetClassWindow'. Resulti
所以我是 Famo.us 的新手,这可能是个愚蠢的问题(我希望不是)。 var Mesh = require('famous/webgl-renderables/Mesh'); ..... var m
我将一些代码从 Qt 5.6.0 迁移到了 5.12.0。令人惊讶的是,我收到了很多与 QWindowsWindow::setGeometry 相关的警告。每当一个对话框显示在另一个对话框之上时,我都
我是一名优秀的程序员,十分优秀!