在 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)的主要内容,如果未能解决你的问题,请参考以下文章

PyQT/Pyside Opengl 小部件覆盖

PySide GUI 的键盘导航

通过 Python 从 .ui 文件处理 Pyside Qt 小部件的正确方法

Qt Designer - 只生成一个带有多个小部件的 .ui 文件

如何在 PySide 中使用样式表为整个小部件设置背景颜色

PySide 全屏 Mac os x 小部件