2017-09-18 1 views
0

J'utilise PYQT5 pour créer une application GUI qui aura 2 onglets. Sur un onglet ('tImp') je veux utiliser un navigateur de fichiers, sur l'autre onglet (tRec) je veux avoir un bouton-poussoir. J'ai codé ce que je veux voir sur l'onglet, mais quand j'exécute le script, je vois les onglets, mais pas le contenu (navigateur de fichiers et bouton poussoir). Voici ce que j'ai jusqu'à présent:Contenu de l'onglet python pyqt5 ne pas afficher

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

Toute aide serait appréciée.

Répondre

0

Vous avez défini des fonctions appelées tImp() et tRec() pour configurer les widgets, mais vous n'appelez jamais ces fonctions.

+0

Merci. Désolé, je suis un peu nouveau à la programmation OO (comme vous pouvez probablement le dire). J'ai créé 'def tImp', puis dans la section "#Add tabs" et j'ai pensé que la ligne "self.tabs.addTab (self. ** tImp **," Import ")" aurait appelé la fonction. J'ai ajouté "tRec()" à la fin de la section "# Ajouter des onglets au widget" et cela semble fonctionner. (Bien que mon tImp() rencontre des problèmes pour une autre raison ... mais c'est pour un autre article) – SRev

+0

Notez que 'self.tImp' n'est pas la même chose que la fonction' tImp' que vous avez créée. Sur une ligne précédente, vous avez fait 'self.tImp = QWidget()'. C'est ce que 'self.tImp' est. 'tImp' est juste une variable locale contenant une fonction qui n'est jamais appelée. – BrenBarn