# _*_ coding:utf-8 _*_ import sys from PyQt4 import QtGui class Example(QtGui.QWidget): def __init__(self): super(Example,self).__init__() self.grid = QtGui.QGridLayout() self.initUI() self.setWindowTitle('grid layout') def initUI(self): while self.grid.count(): item = self.grid.takeAt(0) widget = item.widget() # if widget has some id attributes you need to # save in a list to maintain order, you can do that here # i.e.: aList.append(widget.someId) widget.deleteLater() names=['Cls','Bck','','Close','7','8','9','/','4', '5','6','*','1','2,','3','-','0','.','=','+'] j=0 pos=[(0,0),(0,1),(0,2),(0,3), (1,0),(1,1),(1,2),(1,3), (2,0),(2,1),(2,2),(2,3), (3,0),(3,1),(3,2),(3,3), (4,0),(4,1),(4,2),(4,3)] for iterm in names: button=QtGui.QPushButton(iterm) if j==2: change=QtGui.QPushButton(u'文本編輯器') self.grid.addWidget(change,0,2) change.clicked.connect(self.otherUI) else: self.grid.addWidget(button,pos[j][0],pos[j][1]) j=j+1 self.setLayout(self.grid) self.resize(300,300) def otherUI(self): while self.grid.count(): item = self.grid.takeAt(0) widget = item.widget() # if widget has some id attributes you need to # save in a list to maintain order, you can do that here # i.e.: aList.append(widget.someId) widget.deleteLater() title=QtGui.QLabel('Title') author=QtGui.QLabel('Author') review=QtGui.QLabel('Review') titleEdit=QtGui.QLineEdit() authorEdit=QtGui.QLineEdit() reviewEdit=QtGui.QTextEdit() self.grid.setSpacing(10) self.grid.addWidget(title,1,0) self.grid.addWidget(titleEdit,1,1) self.grid.addWidget(author,2,0) self.grid.addWidget(authorEdit,2,1) self.grid.addWidget(review,3,0) self.grid.addWidget(reviewEdit,3,1,5,1) back=QtGui.QPushButton(u'返回') back.clicked.connect(self.initUI) self.grid.addWidget(back,6,2) self.setLayout(self.grid) self.resize(300,300) app=QtGui.QApplication(sys.argv) ex=Example() ex.show() sys.exit(app.exec_())
展現瞭如何經過QGridLayout實現窗體控件佈局管理。同時,簡單的實現了一下兩個界面之間的切換。app
解釋一下如何刪除一個部件管理器的組件:編輯器
while self.grid.count(): item = self.grid.takeAt(0) widget = item.widget() # if widget has some id attributes you need to # save in a list to maintain order, you can do that here # i.e.: aList.append(widget.someId) widget.deleteLater()