gpt4 book ai didi

python - 为什么我的 QtWidgets 之一没有出现?

转载 作者:太空宇宙 更新时间:2023-11-04 05:38:35 25 4
gpt4 key购买 nike

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

 layout_final = Qtgui.QHBoxLayout() 

垂直的:

 layout_final = Qtgui.QVBoxLayout() 

我的 GL 小部件确实出现在其他小部件的下方,但我希望它位于其他小部件的右侧。

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()

最佳答案

我不确定为什么会发生这种情况,但它似乎是由 GL 小部件优先水平折叠(将其空间让给其他元素)引起的。但是,您可以轻松地覆盖此行为,方法是在添加元素时指定拉伸(stretch)优先级:

layout_final.addWidget(self.widgetGL, stretch=1)

这导致以下布局:

enter image description here

关于python - 为什么我的 QtWidgets 之一没有出现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34816130/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com