我正在阅读ZetCode关于PyQt4 GUI开发的教程。他为制作工具栏提供了以下代码 -
self.toolBar = self.addToolBar('Exit')`
self.toolBar.addAction(exitAction)
这将添加一个menuBar -
menuBar = self.menuBar()
fileMenu = menuBar.addMenu('&File')
fileMenu.addAction(exitAction)
self here是父类,它是QtGui.QMainWindow。
我不明白他为什么在第一个例子中使用self.toolBar但在第二个例子中没有使用self.menuBar。
答案 0 :(得分:2)
在第二种情况下,menuBar
是self.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。
它的编程风格和可读性从程序员到程序员各不相同。
答案 1 :(得分:1)
事实上,作者确实使用了self.menuBar()
:
menuBar = self.menuBar()
上述内容menuBar
引用self.menuBar()
返回的对象。
答案 2 :(得分:1)
menuBar = self.menuBar()
这表明self
已经感觉到它的菜单栏。这个方法调用可能会检索一个预先存在的对象,因此不需要将它存储在实例上,也不一定适合这样做(例如,它实际上是其他人&#39 ; s菜单栏和类正在操纵它。)
答案 3 :(得分:1)
在变量名称的开头添加self
使其成为成员变量或实例变量。创建mainWindow实例时,QMainWindow
上已存在menuBar。因此,无需在成员变量中保存对menuBar的引用,因为只需调用self.menuBar()
,您就可以随时在代码的任何部分检索它。另一方面,当你创建它时,mainWindow上不存在toolBar,你需要通过调用self.addToolBar()
来添加它,并在成员变量中保存对toolBar的引用,以便在toolBar的任何部分执行操作。代码。