[PyKDE] Re: pyuic and Access to QGridLayout
Phil Thompson
phil at riverbankcomputing.co.uk
Wed Feb 8 17:38:05 GMT 2006
On Wednesday 08 February 2006 2:59 pm, Chad Brantly wrote:
> Phil Thompson wrote:
> > On Wednesday 08 February 2006 4:57 am, Chad Brantly wrote:
> >>Chad Brantly wrote:
> >>>Phil Thompson wrote:
> >>>>Mailing list is fine - but send the ui file you are using. Also, first
> >>>>check that pyuic behaves differently to uic - otherwise it's not a bug
> >>>>and won't get changed.
> >>>
> >>>Hi Phil,
> >>>
> >>>Thanks for responding. I don't know anything about C or uic, so I can't
> >>>really tell you if uic behaves differently. I will have to take the
> >>>word of Andreas on that one.
> >>>
> >>>I made a simplified .ui file that illustrates the problem I am
> >>>discussing and the corresponding .py file created with pyuic. In the
> >>>.ui file I named the layout grid in question 'inner_grid', but this name
> >>>is not preserved in the .py file. From what I can tell, this behavior
> >>>mimics uic. However, in the attached form1.py file, shouldn't
> >>>'group_boxLayout' be 'self.group_boxLayout'? If it was I would be able
> >>>to add or change items in the grid later on in my python code.
> >>>
> >>>I apologize for my ignorance of C. I guess that it speaks to the power
> >>>and simplicity of python that someone like me with no programming
> >>>background can do the things I am able to do with it. PyQt and pyuic
> >>>make a great package. Thank you for all of the work you have done on
> >>>this project, and thank you for your help with this issue.
> >>>
> >>>-Chad
> >>>
> >>>------------------------------------------------------------------------
> >>>
> >>>Form1 Form1 0 0 400 224 Form1 main_grid group_box group_box inner_grid
> >>>textEdit2 textEdit1
> >>>
> >>>
> >>>------------------------------------------------------------------------
> >>>
> >>># -*- coding: utf-8 -*-
> >>>
> >>># Form implementation generated from reading ui file 'form1.ui'
> >>>#
> >>># Created: Sat Feb 4 00:22:45 2006
> >>># by: The PyQt User Interface Compiler (pyuic) 3.14.1
> >>>#
> >>># WARNING! All changes made in this file will be lost!
> >>>
> >>>
> >>>import sys
> >>>from qt import *
> >>>
> >>>
> >>>class Form1(QMainWindow):
> >>> def __init__(self,parent = None,name = None,fl = 0):
> >>> QMainWindow.__init__(self,parent,name,fl)
> >>> self.statusBar()
> >>>
> >>> if not name:
> >>> self.setName("Form1")
> >>>
> >>>
> >>> self.setCentralWidget(QWidget(self,"qt_central_widget"))
> >>> Form1Layout =
> >>>QGridLayout(self.centralWidget(),1,1,11,6,"Form1Layout")
> >>>
> >>> self.group_box = QGroupBox(self.centralWidget(),"group_box")
> >>> self.group_box.setColumnLayout(0,Qt.Vertical)
> >>> self.group_box.layout().setSpacing(6)
> >>> self.group_box.layout().setMargin(11)
> >>> group_boxLayout = QGridLayout(self.group_box.layout())
> >>> group_boxLayout.setAlignment(Qt.AlignTop)
> >>>
> >>> self.textEdit2 = QTextEdit(self.group_box,"textEdit2")
> >>>
> >>> group_boxLayout.addWidget(self.textEdit2,0,1)
> >>>
> >>> self.textEdit1 = QTextEdit(self.group_box,"textEdit1")
> >>>
> >>> group_boxLayout.addWidget(self.textEdit1,0,0)
> >>>
> >>> Form1Layout.addWidget(self.group_box,0,0)
> >>>
> >>>
> >>>
> >>> self.languageChange()
> >>>
> >>> self.resize(QSize(400,224).expandedTo(self.minimumSizeHint()))
> >>> self.clearWState(Qt.WState_Polished)
> >>>
> >>>
> >>> def languageChange(self):
> >>> self.setCaption(self.__tr("Form1"))
> >>> self.group_box.setTitle(self.__tr("group_box"))
> >>>
> >>>
> >>> def __tr(self,s,c = None):
> >>> return qApp.translate("Form1",s,c)
> >>>
> >>>if __name__ == "__main__":
> >>> a = QApplication(sys.argv)
> >>> QObject.connect(a,SIGNAL("lastWindowClosed()"),a,SLOT("quit()"))
> >>> w = Form1()
> >>> a.setMainWidget(w)
> >>> w.show()
> >>> a.exec_loop()
> >>
> >>Phil,
> >>
> >>Can you tell me if this is the intended behavior or not? I have a
> >>workaround for now, but I just wanted to check for future reference.
> >
> > It is intended behaviour. pyuic has never directly exposed the layouts.
> > PyQt v3.15 improved the conversion code so that the correct layout class
> > was returned when you walked the tree of objects, so that method should
> > be reliable.
> >
> > Phil
>
> So should I access it with self.group_box.layout().layout() or something
> like that? Right now I am using self.group_box.layout().children()[0]
> but this would only work in the case of one child, right?
Whatever makes most sense - pick an approach that will be the most resilient
to changes in the form's design.
Phil
More information about the PyQt
mailing list