2014-01-20 2 views
1

내가 만든 GUI 프로그램은 창 제목이있는 기본 창을 표시하지만 비어 있으며 유휴 상태에서는 오류가 없습니다. 첫 번째 탭에 확인 버튼이있는 탭 시스템을 설정하기위한 코드 만 넣었습니다.PyQt5 GUI 프로그램은 기본 창 안에 위젯을 표시하지 않습니다.

import sys 
import functions_classes 
from PyQt5 import QtGui, QtCore, QtWidgets 
from PyQt5.QtGui import * 
from PyQt5.QtCore import * 
from PyQt5.QtWidgets import * 

class MainWindow(QMainWindow): 
def __init__(self): 
    super(MainWindow,self).__init__() 
    self.createUI() 

def createUI(self): 
    self.setWindowTitle('Equipment Manager 0.1') 
    self.tabWidget = QTabWidget() 
    #New Data 
    self.newDataWidget = QWidget() 
    self.newDataLayout = QVBoxLayout() 
    self.newFormLayout = QFormLayout() 
    self.newConfirmButton = QPushButton('Confirm',self) 
    self.newDataLayout.addLayout(self.newFormLayout) 
    self.newDataLayout.addWidget(self.newConfirmButton) 
    self.newDataWidget.setLayout(self.newDataLayout) 
    self.tabWidget.addTab(self.newDataWidget, 'New Data') 
    #Update Data 
    self.updateDataWidget = QWidget() 
    self.updateDataLayout = QVBoxLayout() 
    self.updateDataWidget.setLayout(self.updateDataLayout) 
    self.tabWidget.addTab(self.updateDataWidget, 'Update Data') 
    #Query 
    self.queryWidget = QWidget() 
    self.queryLayout = QVBoxLayout() 
    self.queryWidget.setLayout(self.queryLayout) 
    self.tabWidget.addTab(self.queryWidget, 'Query') 
    #Main Layout 
    self.mainLayout = QVBoxLayout() 
    self.mainLayout.addWidget(self.tabWidget) 
    self.setLayout(self.mainLayout) 

def main(): 
    mainWindow = MainWindow() 
    mainWindow.show() 
    mainWindow.raise_() 
    application.exec_() 

답변

2

QMainWindow은 레이아웃과 함께 사용하도록 설계되지 않았습니다. 중앙 위젯이 내용대로 표시됩니다. 그러니 그냥 교체 :

#Main Layout 
self.mainLayout = QVBoxLayout() 
self.mainLayout.addWidget(self.tabWidget) 
self.setLayout(self.mainLayout) 

와 ...

self.setCentralWidget(self.tabWidget) 

을하고 그것을 작동합니다

관련 문제