首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我的QtWidgets没有出现?

为什么我的QtWidgets没有出现?
EN

Stack Overflow用户
提问于 2016-01-15 16:59:16
回答 1查看 59关注 0票数 2

我的GLWidget (继承自QtOpenGL.QGLWidget)不会出现在屏幕上,而它应该在其他小部件的右边可见。但是,当我从水平布局切换时:

代码语言:javascript
复制
 layout_final = Qtgui.QHBoxLayout() 

垂直的:

代码语言:javascript
复制
 layout_final = Qtgui.QVBoxLayout() 

我的GL小部件确实出现在其他小部件下面,但我希望它在其他小部件的右边。

代码语言:javascript
复制
class MainWindow(QtGui.QMainWindow):

    def __init__(self):
        super(MainWindow, self).__init__()


        # create layout
        layout_before_final = QtGui.QVBoxLayout()
        layout_final = QtGui.QHBoxLayout()
        layout = QtGui.QGridLayout()
        layout1 = QtGui.QGridLayout()
        self.groupBox = QtGui.QGroupBox('Set HDF5 file')
        self.groupBox1 = QtGui.QGroupBox('Current HDF5 file')

        # instance widgets
        # first box
        self.setH5Button = QtGui.QPushButton('set H5')
        self.currentH5LineEdit = QtGui.QLineEdit('')
        layout.addWidget(self.setH5Button, 0,0)
        layout.addWidget(self.currentH5LineEdit, 0, 1)
        self.groupBox.setLayout(layout)

        # second box
        self.channelsLabel = QtGui.QLabel('Channel')
        self.channelsComboBox = QtGui.QComboBox()
        self.levelsLabel = QtGui.QLabel('Level')
        self.levelsComboBox = QtGui.QComboBox()      


        layout1.addWidget(self.channelsLabel, 0, 0, 1, 1)
        layout1.addWidget(self.channelsComboBox, 0, 1, 1, 1)
        layout1.addWidget(self.levelsLabel, 1, 0, 1, 1)
        layout1.addWidget(self.levelsComboBox, 1, 1, 1, 1)
        self.groupBox1.setLayout(layout1)        

        # create QWidget to gather the two previous boxes

        self.widget = QtGui.QWidget()
        layout_before_final.addWidget(self.groupBox)
        layout_before_final.addWidget(self.groupBox1)   

        self.widget.setLayout(layout_before_final)

        # GL widget
        self.widgetGL = MyWidget()

        # create a final widget to add the GL widget
        self.finalWidget = QtGui.QWidget()
        layout_final.addWidget(self.widgetGL)
        layout_final.addWidget(self.widget)   

        self.finalWidget.setLayout(layout_final)                


        self.setCentralWidget(self.finalWidget)

        self.setWindowTitle('PyPractis')
        self.resize(640, 480)      





def main():
    import sys

    app = QtGui.QApplication(sys.argv)


    w = MainWindow()
    w.resize(640, 480)
    w.show()
    sys.exit(app.exec_())

if __name__ == '__main__':
    main()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-15 22:52:31

我不知道为什么会发生这种情况,但它似乎是由GL小部件优先水平折叠造成的(将它的空间让给其他元素)。但是,通过在添加元素时指定拉伸优先级,可以轻松地重写此行为:

代码语言:javascript
复制
layout_final.addWidget(self.widgetGL, stretch=1)

这将导致以下布局:

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34816130

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档