2017-09-18 3 views
0

2 개의 탭이있는 GUI 응용 프로그램을 만들기 위해 PYQT5를 사용하고 있습니다. 하나의 탭 ('tImp')에서 파일 브라우저를 사용하고 싶습니다. 다른 탭 (tRec)에서 푸시 버튼을 갖고 싶습니다. 내가 탭에서보고 싶은 것을 코딩했는데 스크립트를 실행할 때 탭이 표시되지만 내용 (파일 브라우저 및 푸시 버튼)은 표시되지 않습니다.python pyqt5 탭 내용이 표시되지 않습니다.

import sys from PyQt5.QtWidgets import QMainWindow, QApplication, QPushButton, QWidget, QAction, QTabWidget,QVBoxLayout, QInputDialog, QLineEdit, QFileDialog from PyQt5.QtGui import QIcon 

class App(QMainWindow): 

    def __init__(self): 
     super().__init__() 
     self.title = 'Budget' 
     self.left = 10 
     self.top = 40 
     self.width = 1200 
     self.height = 600 
     self.setWindowTitle(self.title) 
     self.setGeometry(self.left, self.top, self.width, self.height) 

     self.table_widget = MyTableWidget(self) 
     self.setCentralWidget(self.table_widget) 

     self.show() 

class MyTableWidget(QWidget):  

    def __init__(self, parent): 
     super(QWidget, self).__init__(parent) 
     self.layout = QVBoxLayout(self) 

     # Initialize tab screen 
     self.tabs = QTabWidget() 
     self.tImp = QWidget() 
     self.tRec = QWidget() 
     self.tabs.resize(1200,600) 

     # Create Import tab 
     def tImp(): 
      self.tImp.layout = QVBoxLayout(self) 
      self.tImp.layout.addWidget(self.openFileNamesDialog) 
      self.tImp.setLayout(self.tImp.layout) 

     # Create file browser Widget   
     def openFileNamesDialog(self):  
      options = QFileDialog.Options() 
      options |= QFileDialog.DontUseNativeDialog 
      files, _ = QFileDialog.getOpenFileNames(self,"QFileDialog.getOpenFileNames()", "","All Files (*);;Format Files (*.csv)", options=options) 
      if files: 
       print(files)  

     # Create Reconcile tab 
     def tRec(): 
      self.tRec.layout = QVBoxLayout(self) 
      self.pushButton1 = QPushButton("Commit") 
      self.tRec.layout.addWidget(self.pushButton1) 
      self.tRec.setLayout(self.tRec.layout) 

     # Add tabs 
     self.tabs.addTab(self.tImp,"Import") 
     self.tabs.addTab(self.tRec,"Reconcile") 

     # Add tabs to widget   
     self.layout.addWidget(self.tabs) 
     self.setLayout(self.layout) 

if __name__ == '__main__': 
    app = QApplication(sys.argv) 
    ex = App() 
    sys.exit(app.exec_()) 

어떤 도움을 주시면 감사하겠습니다 : 아래는 내가 지금까지 가지고있는 것입니다.

답변

0

tImp()tRec()이라는 기능을 정의하여 위젯을 설정했지만 절대로 이러한 기능을 호출하지 마십시오.

+0

감사합니다. 죄송합니다, 저는 OO 프로그래밍에 조금 익숙합니다 (아마도 말할 수 있듯이). 나는 "def tImp"를 만들었고 "#Add tabs"섹션에서 "self.tabs.addTab (self. ** tImp **,"Import ")"라는 함수가 함수를 호출했을 것이라고 생각했습니다. "tRec()"을 "# 위젯에 탭 추가"섹션 끝에 추가했는데 작동하는 것 같습니다. (비록 내 tImp()가 다른 이유로 인해서 문제를 일으키고는 있지만 ... – SRev

+0

'self.tImp'는 여러분이 만든'tImp' 함수와 같지 않습니다. 이전 줄에서는'self.tImp = QWidget()'을했다. 그것이 바로'self.timmp'입니다. 'tImp'는 절대로 호출되지 않는 함수를 담고있는 지역 변수입니다. – BrenBarn

관련 문제