在 GUI 应用程序中定位小部件 (PySide)
Posted
技术标签:
【中文标题】在 GUI 应用程序中定位小部件 (PySide)【英文标题】:Positioning Widgets inside a GUI Application (PySide) 【发布时间】:2014-01-30 19:04:53 【问题描述】:如何在不使用 QT Designer 的情况下制作这样的 GUI 应用程序:
Image http://imagizer.imageshack.us/v2/800x600q90/856/zz53.png
【问题讨论】:
+1 表示非常棒的红色文本,-2 表示绝对没有任何迹象表明要回答问题。净变化:-1。 【参考方案1】:这个问题的答案真的应该是:by reading the finely-crafted manual。
Qt 最棒的地方之一是其出色的文档。它太好了,你甚至不需要了解 C++ 就可以使用它。如果您不熟悉 PyQt/PySide 所提供的一切,那么您真的错过了学习 PyQt/PySide 的重要部分。
但这到底是怎么回事,这是您所要求的粗略模型(其余的我将留给您作为练习):
from PySide import QtCore, QtGui
class Window(QtGui.QMainWindow):
def __init__(self):
super(Window, self).__init__()
grid = QtGui.QGridLayout()
grid.addWidget(QtGui.QLabel('Label A', self), 0, 0)
grid.addWidget(QtGui.QLabel('Label B', self), 0, 1)
grid.addWidget(QtGui.QLabel('Label C', self), 1, 0)
grid.addWidget(QtGui.QLabel('Label D', self), 1, 1)
vbox = QtGui.QVBoxLayout()
vbox.addWidget(QtGui.QRadioButton('Radio A', self))
vbox.addWidget(QtGui.QRadioButton('Radio B', self))
vbox.addWidget(QtGui.QRadioButton('Radio C', self))
vbox.addWidget(QtGui.QPushButton('Button', self))
widget = QtGui.QWidget(self)
layout = QtGui.QGridLayout(widget)
layout.addLayout(grid, 0, 0)
layout.addLayout(vbox, 0, 1)
layout.addWidget(
QtGui.QSlider(QtCore.Qt.Horizontal, self), 1, 0, 1, 2)
self.setCentralWidget(widget)
if __name__ == '__main__':
import sys
app = QtGui.QApplication(sys.argv)
window = Window()
window.setGeometry(500, 300, 100, 100)
window.show()
sys.exit(app.exec_())
【讨论】:
再次感谢@ekhumoro,我刚刚尝试了你在上面写的内容,它运行良好,这是真正的代码,省略了一些其他实现:codepad.org/CoppVOAE 如果你想看看..无论如何,您也可以尝试一下,因为我想在 VBoxLayout 的顶部显示单选按钮,而不是在它的中间。有空的时候,我会试着看看你之前发布的指南,再次感谢你的回答! 我希望文档对不太基本的东西有好处。如果您真的想充分利用在线的 qt 文档,使用 c++ 工作是一大优势。我保证在某些时候你会看到 C++ 文档,并发现它在 PySide/PyQt 中没有对应的。以上是关于在 GUI 应用程序中定位小部件 (PySide)的主要内容,如果未能解决你的问题,请参考以下文章
通过 Python 从 .ui 文件处理 Pyside Qt 小部件的正确方法