例1:菜单栏
# -*- coding: utf-8 -*-
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QAction
class MyWindow(QMainWindow):
def __init__(self):
super().__init__()
self.iniUI()
def iniUI(self):
self.setWindowTitle("主窗口")
self.setGeometry(300, 300, 250, 150)
#创建状态栏
self.statusBar()
#创建菜单栏
menu = self.menuBar()
# 创建两个菜单
file_menu = menu.addMenu("文件")
file_menu.addSeparator()
edit_menu = menu.addMenu('修改')
#定义行为、设定状态栏、并添加到菜单
new_action = QAction('新的文件', self)
new_action.setStatusTip('打开新的文件')
file_menu.addAction(new_action)
# 定义退出行为、设定状态栏、设定槽函数、设定快捷键、并添加到菜单
exit_action = QAction('退出',self)
exit_action.setStatusTip("点击退出应用程序")
exit_action.triggered.connect(self.close)
exit_action.setShortcut('Ctrl+Q')
file_menu.addAction(exit_action)
if __name__ == '__main__':
app = QApplication(sys.argv)
w = MyWindow()
w.show()
sys.exit(app.exec_())
QMainWindow类提供了一个应用主窗口。默认创建一个拥有状态栏、工具栏和菜单栏的经典应用窗口骨架。
setGeometry()做了两件事:将窗口在屏幕上显示,并设置了它的尺寸。setGeometry()方法的前两个参数定位了窗口的x轴和y轴位置。第三个参数是定义窗口的宽度,第四个参数是定义窗口的高度。事实上,这是将resize()和move()方法融合在一个方法内。
例2:工具栏
# -*- coding: utf-8 -*-
import sys
from PyQt5.QtWidgets import QMainWindow, QTextEdit, QAction, QApplication
from PyQt5.QtGui import QIcon
class MyWindow(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
textEdit = QTextEdit()
self.setCentralWidget(textEdit)
#定义行为
exitAction = QAction(QIcon('web.png'), 'Exit', self)
exitAction.setShortcut('Ctrl+Q')
exitAction.setStatusTip('Exit application')
exitAction.triggered.connect(self.close)
#由主窗口生成状态栏
sb = self.statusBar()
sb.showMessage('Ready')
#由主窗口生成菜单栏
menubar = self.menuBar()
fileMenu = menubar.addMenu('&File')
fileMenu.addAction(exitAction)
#由主窗口添加工具栏
toolbar = self.addToolBar('Exit')
toolbar.addAction(exitAction)
self.setGeometry(300, 300, 350, 250)
self.setWindowTitle('Main window')
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
w = MyWindow()
sys.exit(app.exec_())