ScrollArea不显示

ScrollArea不显示

问题描述:

我正在建造gui app问题。ScrollArea不显示

类接口包含menubar,工具栏(它不会显示),并调用类TabWidget_

类TabWidget_包含选项卡。目前只有一个选项卡(选项卡“Synthèse”)。我有几组到表(Coordonnées, Equipe, Patrimoine, Bailleurs, Observations)

选项卡是QtGui.QWidget()。所有组都在标签中。我添加了标签scrollArea (scrollArea = QtGui.QScrollArea())

我也看过其他帖子,但没有找到我的错误。

我的代码是这样的。

import os 
import platform 
import sys 
from PyQt4 import QtCore, QtGui 

class Interface(QtGui.QMainWindow):  
    def __init__(self): 
     super(Interface, self).__init__() 
     self.setWindowTitle('Compagnons Batisseur') 
     self.resize(1440, 900) 
     self.edit= QtGui.QTextEdit() 
     self.barre_menu() 
     self.centralwidget = QtGui.QLabel() 
     self.tab_barre=TabWidget_(self.centralwidget) 
     self.setCentralWidget(self.centralwidget) 
     self.show() 

    def test(self): 
     self.edit.setGeometry(QtCore.QRect(20, 40, 601, 501)) 
     self.edit.setStatusTip('Input Text Here') 
     self.edit.setToolTip('Input Text Here') 

    def createAction(self,text, icon=None, shortcut=None, tip=None, slot=None): 
     action=QtGui.QAction(QtGui.QIcon(icon),text, self) 
     try: 
      action.setShortcut(shortcut) 
      action.setStatusTip(tip) 
      action.setToolTip(tip) 
      action.triggered.connect(slot) 
     except TypeError: 
      pass 
     return action 
    def addMenuItem(self, nomItem): 
     item=self.menuBar().addMenu(nomItem) 
     return item 
    def barre_menu(self): 
     #Fichier 
     exitAction=self.createAction("Fermer", icon="logout.png", shortcut="Ctrl+Q", tip="Fermer l'application", slot=self.close) #on va aussi reimplementer la close event handler pour que quand on appuie sur croix, la methode soit lue egalement. ce sera pratique pour enregistrer les changements 
     #saveAction=self.createAction("Enregistrer", icon="save.png", shortcut="Ctrl+S", tip="Enregistrer", slot=self.save) 
     fichier=self.addMenuItem('Fichier') 
     fichier.addActions([exitAction]) 
     #Edition 
     cutAction=self.createAction("Couper", icon="cut.png", shortcut=QtGui.QKeySequence.Cut, tip="Couper", slot=self.edit.cut) 
     copyAction=self.createAction("Copier", icon="copy.png", shortcut=QtGui.QKeySequence.Copy, tip="Copier", slot=self.edit.copy) 
     pasteAction=self.createAction("Coller", icon="paste.png", shortcut=QtGui.QKeySequence.Paste, tip="Coller", slot=self.edit.paste) 
     edition=self.menuBar().addMenu('Edition') 
     edition.addActions([cutAction, copyAction, pasteAction]) 
     edition=self.menuBar().addMenu('Edition') 
     #Aide 
     aide=self.menuBar().addMenu('Aide') 
     #Barre d'Outils, a enlever pas necessaire 
     toolbar = self.addToolBar('Exit') 
     toolbar.addAction(exitAction) 
     toolbar.addAction(copyAction) 
     toolbar.addAction(pasteAction) 
     toolbar.addAction(cutAction) 



class TabWidget_(QtGui.QWidget): 
    def __init__(self, centralwidget, parent=None): 
     QtGui.QWidget.__init__(self) 

     super(TabWidget_,self).__init__(parent) 
     self.Onglets = QtGui.QTabWidget(centralwidget) 
     self.Onglets.setGeometry(QtCore.QRect(0, 0, 1400, 871)) 
     self.Onglets.setFocusPolicy(QtCore.Qt.TabFocus) 
     self.Onglets.setLayoutDirection(QtCore.Qt.LeftToRight) 
     self.Onglets.setMovable(False) 
     self.Tab_Synthese() 

    def create_group(self,nom_tab, nom_groupe, x, y, w, h): 
     group=QtGui.QGroupBox(nom_tab) 
     group.setTitle(nom_groupe) 
     group.setGeometry(QtCore.QRect(x,y,w,h)) 
     return group 

    def create_line(self,nom_groupe, nom_line, x, y, w, h): 
     line = QtGui.QLabel(nom_groupe) 
     line.setGeometry(QtCore.QRect(x,y,w,h)) 
     line.setFocusPolicy(QtCore.Qt.TabFocus) 
     line.setObjectName(nom_line) 
     line.setText(nom_line) 
     return line 

    def create_line_edit(self,nom_groupe, x, y, w, h): 
     line_edit=QtGui.QLineEdit(nom_groupe) 
     line_edit.setGeometry(QtCore.QRect(x,y,w,h)) 
     return line_edit 


    def Tab_Synthese(self): 
     scrollArea = QtGui.QScrollArea() 
     tab=QtGui.QWidget() 

     #Création de l'onglet Synthèse 
     #self.Onglets.addTab(tab, "Synthèsse") 

     #Groupe COORDONNEES 
     coordonnees=self.create_group(tab, "Coordonnées", 400, 20, 471, 500) 

     #Eléments du groupe Coordonnées 
     adresse=self.create_line(coordonnees, "Adresse", 10,25,150,30) 
     adresse_edit= self.create_line_edit(coordonnees, 170, 25, 260, 30)  
     code_postal = self.create_line(coordonnees, "Code Postal", 10, 60,150,30) 
     code_postal_edit=self.create_line_edit(coordonnees,170, 60, 60, 30) 
     ville=self.create_line(coordonnees, "Ville", 10,95,50,30) 
     ville_edit= self.create_line_edit(coordonnees, 170, 95, 135, 30) 
     téléphone = self.create_line(coordonnees, "Téléphone", 10, 130, 150, 30) 
     téléphone_edit=self.create_line_edit(coordonnees,170, 130, 100, 30)  


     #Groupe EQUIPE 
     equipe =self.create_group(tab, "Equipe", 400, 190, 471, 500) 

     #Eléments du groupe Equipe 
     anim_tech = self.create_line(equipe, "Animateur technique", 10, 25, 150, 30) 
     anim_tech_edit=self.create_line_edit(equipe,170, 25, 260, 30)  
     anim_hab = self.create_line(equipe, "Animateur habitat", 10, 60, 150, 30) 
     anim_hab_edit=self.create_line_edit(equipe,170, 60, 260, 30) 


     #Groupe PATRIMOINE 
     patrimoine = self.create_group(tab, "Patrimoine", 400, 290, 471, 500) 

     #Eléments du groupe Patrimoine 
     nb_immeubles = self.create_line(patrimoine, "Nombre d'immeubles", 10, 25, 150, 30) 
     nb_immeubles_edit=self.create_line_edit(patrimoine,170, 25, 260, 30)   
     nb_logements = self.create_line(patrimoine, "Nombre de logements", 10, 60, 150, 30) 
     anim_hab_edit=self.create_line_edit(patrimoine,170, 60, 260, 30) 

     #Groupe BAIL 
     bail = self.create_group(tab, "Bailleurs", 400, 390, 471, 500) 

     #Eléments du groupe Equipe 
     date = self.create_line(bail, "Date d'ouverture", 10, 25, 150, 30) 
     date_edit= self.create_line_edit(bail, 170, 25, 150, 30) 

     bailleur = self.create_line(bail, "Bailleurs", 10, 60, 150, 30) 
     bailleurs_edit= QtGui.QComboBox(bail) 
     bailleurs_edit.setGeometry(QtCore.QRect(170, 60, 260, 30)) 
     bailleurs_edit.addItem("item1") 
     bailleurs_edit.addItem("item2") 

     #Groupe OBSERVATIONS 
     observations = self.create_group(tab, "Observations", 400, 490, 471, 500) 
     text=QtGui.QTextEdit(observations) 
     text.setGeometry(QtCore.QRect(10,25 , 420, 200)) 

     scrollArea.setWidget(tab) 
     #scrollArea.setBackgroundRole(QtGui.QPalette.Dark) 
     scrollArea.setWidgetResizable(True) 
     scrollArea.setFixedHeight(800) 
     self.Onglets.addTab(scrollArea,"Synthèse") 

任何想法?谢谢。

+0

“昨天我已经花了整个下午,试图解决问题没有成功。”如果只有你会说什么“问题”是。 – Trilarion

+0

问题是滚动条不显示。我的代码没有垂直或水平条,我不知道要添加什么才能让它们出现。 – Liliane

使用固定大小的东西我很少推荐,我宁愿如果有必要QSpacerItem使用的布局(QHBoxLayoutQVBoxLayoutQFormLayoutQGridLayout),所以修改代码以适应它,如下图所示:

class TabWidget_(QtGui.QWidget): 
    def __init__(self, parent=None): 
     QtGui.QWidget.__init__(self, parent) 
     self.setLayout(QtGui.QVBoxLayout()) 
     self.Onglets = QtGui.QTabWidget(self) 
     self.Onglets.setFocusPolicy(QtCore.Qt.TabFocus) 
     self.Onglets.setMovable(False) 
     self.layout().addWidget(self.Onglets) 
     self.Tab_Synthese() 

    def create_group(self,nom_tab, nom_groupe): 
     group=QtGui.QGroupBox(nom_tab) 
     group.setTitle(nom_groupe) 
     nom_tab.layout().addWidget(group) 
     group.setLayout(QtGui.QVBoxLayout()) 
     return group 

    def create_line(self,nom_groupe, nom_line): 
     line = QtGui.QLabel(nom_groupe) 
     line.setObjectName(nom_line) 
     line.setText(nom_line) 
     nom_groupe.layout().addWidget(line) 
     return line 

    def create_line_edit(self,nom_groupe): 
     line_edit=QtGui.QLineEdit(nom_groupe) 
     nom_groupe.layout().addWidget(line_edit) 
     return line_edit 


    def Tab_Synthese(self): 
     scrollArea = QtGui.QScrollArea() 

     widget = QtGui.QWidget() 
     widget.setLayout(QtGui.QHBoxLayout()) 

     tab=QtGui.QWidget(widget) 
     tab.setMaximumWidth(400) 

     widget.layout().addWidget(tab, QtCore.Qt.AlignCenter) 

     tab.setLayout(QtGui.QVBoxLayout()) 
     #Création de l'onglet Synthèse 
     #self.Onglets.addTab(tab, "Synthèsse") 

     #Groupe COORDONNEES 
     coordonnees = self.create_group(tab, "Coordonnées") 
     #Eléments du groupe Coordonnées 
     adresse=self.create_line(coordonnees, "Adresse") 
     adresse_edit= self.create_line_edit(coordonnees)  
     code_postal = self.create_line(coordonnees, "Code Postal") 
     code_postal_edit=self.create_line_edit(coordonnees) 

     ville=self.create_line(coordonnees, "Ville") 
     ville_edit= self.create_line_edit(coordonnees) 
     téléphone = self.create_line(coordonnees, "Téléphone") 
     téléphone_edit=self.create_line_edit(coordonnees) 

     #Groupe EQUIPE 
     equipe =self.create_group(tab, "Equipe") 

     #Eléments du groupe Equipe 
     anim_tech = self.create_line(equipe, "Animateur technique") 
     anim_tech_edit=self.create_line_edit(equipe)  
     anim_hab = self.create_line(equipe, "Animateur habitat") 
     anim_hab_edit=self.create_line_edit(equipe) 


     #Groupe PATRIMOINE 
     patrimoine = self.create_group(tab, "Patrimoine") 

     #Eléments du groupe Patrimoine 
     nb_immeubles = self.create_line(patrimoine, "Nombre d'immeubles") 
     nb_immeubles_edit=self.create_line_edit(patrimoine)   
     nb_logements = self.create_line(patrimoine, "Nombre de logements") 
     anim_hab_edit=self.create_line_edit(patrimoine) 

     #Groupe BAIL 
     bail = self.create_group(tab, "Bailleurs") 

     #Eléments du groupe Equipe 
     date = self.create_line(bail, "Date d'ouverture") 
     date_edit= self.create_line_edit(bail) 

     bailleur = self.create_line(bail, "Bailleurs") 
     bailleurs_edit= QtGui.QComboBox(bail) 
     bail.layout().addWidget(bailleurs_edit) 
     bailleurs_edit.addItem("item1") 
     bailleurs_edit.addItem("item2") 

     #Groupe OBSERVATIONS 
     observations = self.create_group(tab, "Observations") 
     text=QtGui.QTextEdit(observations) 
     text.setMinimumHeight(200) 
     observations.layout().addWidget(text) 

     scrollArea.setWidget(widget) 
     #scrollArea.setBackgroundRole(QtGui.QPalette.Dark) 
     scrollArea.setWidgetResizable(True) 
     #scrollArea.setFixedHeight(800) 
     self.Onglets.addTab(scrollArea, "Synthèse") 

获得什么如下图所示:

enter image description here

完整的代码是基于以下link

+0

谢谢!我不喜欢布局,但也许是因为我开始。 – Liliane