这是我在这里的第一个问题,我希望尽可能清楚。
我有一个带有两个内部元素的 Widget:WidgetA 应该在右上角,而 WidgetB 应该环绕第一个元素(所以它里面的文本应该在 WidgetA 下面)。
这就是我想要实现的目标:
________________________
| _________ _____ |
| | B | | A | |
| | some | |___| |
| | text |--------- |
| | should go here | |
| |_________________| |
|______________________|
- 我已经搜索了一整天,但找不到任何与我的案例匹配的东西。
- 我试图建立一个FlowLayout但仍然不是我想要的。
- 我尝试将它设计为将 HTML 和 CSS 放在 QLabel 中,但我发现在 PyQt 中不支持浮动(诺基亚你真丢脸!!)
- 我已经开始构建自定义 QGraphicsView + QGraphicsItem,但这对我来说有点困难,我希望也许有一个更简单的解决方案。
你们建议我使用什么布局?我应该编写自己的自定义布局吗?
在我的特殊情况下,WidgetA 是 QLabel(带有 QPixmap),而 WidgetB 是 QFormLayout(我现在认为这不是 Widget,但我认为这种方式可能对其他人更有帮助)。
我已经构建了一个代码示例,但这更像是一个设计问题,也许代码并不重要。
from PyQt4 import QtGui, QtCore
class MyWidget(QtGui.QWidget):
def __init__(self, parent=None):
super(MyWidget, self).__init__(parent)
self.layout = QtGui.QVBoxLayout()
self.hLayout = QtGui.QHBoxLayout()
self.smallLabel = QtGui.QLabel("small small")
self.longLabel = QtGui.QLabel('''
very very very very very very very
very very very very very very very
very very very very very very very
long label''')
self.longLabel.setWordWrap(True)
self.hLayout.addWidget(self.longLabel)
self.hLayout.addWidget(self.smallLabel)
self.layout.addLayout(self.hLayout)
self.setLayout(self.layout)
# I run this in Maya, so I don't care about __main__ and apps
w = MyWidget()
w.show()
谢谢!