2014-07-18 67 views
0

我正在閱讀關於PyQt4 GUI開發的ZetCode教程。他給出了下面的代碼製作工具欄 -關鍵字自身的重要性?

self.toolBar = self.addToolBar('Exit')` 
self.toolBar.addAction(exitAction) 

,這增加一個菜單欄 - 這裏

menuBar = self.menuBar()            
fileMenu = menuBar.addMenu('&File') 
fileMenu.addAction(exitAction) 

自我是父類,這是一個QtGui.QMainWindow。

我不明白他爲什麼在第一個示例中使用self.toolBar,但沒有在第二個示例中使用self.menuBar。

回答

2

在變量名的開始添加self使得它成員變量實例變量。當你創建mainWindow的實例時,menuBar已經存在於QMainWindow。因此,不需要在成員變量中保存對menuBar的引用,因爲您只需調用self.menuBar()即可隨時在代碼的任何部分檢索它。另一方面,當您創建toolBar時,在mainWindow上不存在toolBar,您需要通過調用self.addToolBar()來添加toolBar,並將對toolBar的引用保存在成員變量中,以便在代碼的任何部分對toolBar執行操作。

1

其實,筆者也使用self.menuBar():以上

menuBar = self.menuBar() 

使得menuBar指由self.menuBar()返回的對象。

1
menuBar = self.menuBar()            

這表明self已經擁有了菜單欄的感覺。這個方法調用可能會檢索一個預先存在的對象,因此不需要將它存儲在實例中,也不一定適合這樣做(如果它實際上是其他人的菜單欄,並且類正在操作它) 。

2

在第二個情況下,menuBarself.menuBar(),下面的代碼的引用,

menuBar = self.menuBar()            
fileMenu = menuBar.addMenu('&File') 
fileMenu.addAction(exitAction) 

簡單地歸結爲

fileMenu = self.menuBar().addMenu('&File') 
fileMenu.addAction(exitAction) 

這是不從所述第一代碼段不同的是你有

self.toolBar = self.addToolBar('Exit')` 
self.toolBar.addAction(exitAction) 

所以,如果你問

我不明白他爲什麼在第一個例子中使用self.toolBar,但在第二個例子中 沒有使用self.menuBar。

它的編程風格和可讀性因程序員和程序員而異。