My GLWidget (унаследованный от QtOpenGL.QGLWidget) не отображается на экране, в то время как он должен быть видимым справа от других виджетов. Однако, при переходе из горизонтального расположения:Почему один из моих QtWidgets не появляется?
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()