大家好,欢迎来到IT知识分享网。
菜单、工具栏和状态栏
菜单、工具栏和状态栏
一、菜单
1.菜单基础类
(1)QMenuBar类
创建菜单栏的两种方法
#QMenuBar类构造方法 #MainWindow对象的menuBar()方法 self.menuBar = QtWidgets.QMenuBar(MainWindow) self.menuBar = MainWindow.menuBar()
(2)QMenu类
(3)QAction类
QAction类有一个常用信号triggered,用来在单击菜单项时发射
注意: 只有QAction菜单项可以执行操作,QMenuBar菜单栏和QMenu菜单都不会执行任何操作
2.添加和删除菜单
3.设置菜单项
4.为菜单设置快捷键
(1)在输入菜单文本时设置
为文本中输入“&+字母”
eg:输入”(&N)”,使用<Alt+N>调用
(2)使用setShortcut()方法设置
只需要输入相应的快捷键即可
self.actionxinjian.setShortcut("Ctrl+N")
5.为菜单设置图标
icon = QtGui.QIcon() icon.addPixmap(QtGui.QPixmap(img/1.jpg),QtGui.QIcon.Normal,QtGui.QIcon.Off) self.actionxinjian.setIcon(icon)
6.菜单的功能实现
单击菜单项弹出信息提示框
from PyQt5 import QtCore, QtGui, QtWidgets class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(500,400) self.centralwidget = QtWidgets.QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") MainWindow.setCentralWidget(self.centralwidget) #self.menuBar = MainWindow.menuBar() #添加菜单栏 self.menuBar = QtWidgets.QMenuBar(MainWindow) self.menuBar.setGeometry(QtCore.QRect(0, 0, 500,23)) self.menuBar.setObjectName("menuBar") #添加“文件”菜单 self.menu = QtWidgets.QMenu(self.menuBar) self.menu.setObjectName("menu") self.menu.setTitle("文件") #添加“编辑”菜单 self.menu_2 = QtWidgets.QMenu(self.menuBar) self.menu_2.setObjectName("menu") self.menu_2.setTitle("编辑") MainWindow.setMenuBar(self.menuBar) #添加“新建”菜单项 self.actionxinjian = QtWidgets.QAction(MainWindow) self.actionxinjian.setEnabled(True) #设置菜单可用 #为菜单设置图标 icon = QtGui.QIcon() icon.addPixmap(QtGui.QPixmap("img/1.ico"),QtGui.QIcon.Normal,QtGui.QIcon.Off) self.actionxinjian.setIcon(icon) #设置菜单为windows快捷键 self.actionxinjian.setShortcutContext(QtCore.Qt.WindowShortcut) self.actionxinjian.setIconVisibleInMenu(True) #图标可见 self.actionxinjian.setObjectName("actionxinjian") self.actionxinjian.setText("新建(&N)")#菜单文本 self.actionxinjian.setIconText("新建")#图标文本 self.actionxinjian.setToolTip("新建")#提示文本 self.actionxinjian.setShortcut("Ctrl+N")#设置快捷键 #添加“打开”菜单项 self.actiondakai = QtWidgets.QAction(MainWindow) #为菜单设置图标 icon1 = QtGui.QIcon() icon1.addPixmap(QtGui.QPixmap("img/2.ico"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.actiondakai.setIcon(icon1) # 设置菜单为windows快捷键 self.actiondakai.setShortcutContext(QtCore.Qt.WindowShortcut) self.actiondakai.setIconVisibleInMenu(True) # 图标可见 self.actiondakai.setObjectName("actiondakai") self.actiondakai.setText("打开(&O)") # 菜单文本 self.actiondakai.setIconText("打开") # 图标文本 self.actiondakai.setToolTip("打开") # 提示文本 self.actiondakai.setShortcut("Ctrl+O") # 设置快捷键 # 添加“关闭”菜单项 self.actionguanbi = QtWidgets.QAction(MainWindow) # 为菜单设置图标 icon2 = QtGui.QIcon() icon2.addPixmap(QtGui.QPixmap("img/3.ico"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.actionguanbi.setIcon(icon2) # 设置菜单为windows快捷键 self.actionguanbi.setShortcutContext(QtCore.Qt.WindowShortcut) self.actionguanbi.setIconVisibleInMenu(True) # 图标可见 self.actionguanbi.setObjectName("actionguanbi") self.actionguanbi.setText("关闭(&M)") # 菜单文本 self.actionguanbi.setIconText("关闭") # 图标文本 self.actionguanbi.setToolTip("关闭") # 提示文本 self.actionguanbi.setShortcut("Ctrl+M") # 设置快捷键 self.menu.addAction(self.actionxinjian)#“文件”菜单添加“新建”菜单 self.menu.addAction(self.actiondakai)#“文件”菜单添加“打开”菜单 self.menu.addSeparator()#添加分割线 self.menu.addAction(self.actionguanbi)#“文件”菜单添加“关闭”菜单 #"文件"菜单的菜单项添加到菜单栏中 self.menuBar.addAction(self.menu.menuAction()) #“编辑”菜单的菜单项添加到菜单栏中 self.menuBar.addAction(self.menu_2.menuAction()) self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow) #为菜单中QAction绑定triggered信号 self.menu.triggered[QtWidgets.QAction].connect(self.getmenu) def getmenu(self,m): from PyQt5.QtWidgets import QMessageBox QMessageBox.information(MainWindow,"提示","您选择的是"+m.text(),QMessageBox.Ok) def retranslateUi(self, MainWindow): _translate = QtCore.QCoreApplication.translate MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow")) if __name__ == "__main__": import sys app = QtWidgets.QApplication(sys.argv) MainWindow = QtWidgets.QMainWindow() ui = Ui_MainWindow() ui.setupUi(MainWindow) MainWindow.show() sys.exit(app.exec_())
二、工具栏
1.工具栏类:QToolBar
2.添加工具栏
对应的python代码如下:
self.toolBar = QtWidgets.QToolBar(MainWindow) self.toolBar.setObjectName("toolBar") MainWindow.addToolBar(QtCore.Qt.TopToolBarArea,self.toolBar)
还可直接使用MainWindow对象中的addToolBar()方法添加
MainWindow.addToolBar("toolBar")
3.为工具栏添加图标按钮
#设置工具栏中按钮的显示方式为:文字显示在图标下方 self.toolBar.setToolButtonStyle(QtCore.Qt.ToolButtonTextUnderIcon) self.toolBar.addAction(QtGui.QIcon("img/1.ico"),"新建")
4.一次为工具栏添加多个图标按钮
#创建“打开”按钮对象 self.open = QtWidgets.QAction(QtGui.QIcon("img/2.ico"),"打开") #创建“关闭”按钮对象 self.close = QtWidgets.QAction(QtGui.QIcon("img/3.ico"),"关闭") self.toolBar.addActions([self.open,self.close])
5.向工具栏中添加标准控件
#创建一个ComboBox下拉列表控件 self.combobox = QtWidgets.QComboBox() #定义职位列表 list = ["总经理","副总经理","人事部经理"] self.combobox.addItems(list) #职位列表添加到ComboBox下拉列表中 self.toolBar.addWidgets(self.combobox) #将下拉列表添加到工具栏中
6.设置工具栏按钮大小
self.toolBar.setIconSize(QtCore.QSize(16,16)) #设置工具栏图标按钮大小
7.实现工具栏的单击功能
from PyQt5 import QtCore, QtGui, QtWidgets from PyQt5.QtWidgets import QMessageBox class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(400, 400) self.centralwidget = QtWidgets.QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") MainWindow.setCentralWidget(self.centralwidget) self.toolBar = QtWidgets.QToolBar(MainWindow) self.toolBar.setObjectName("toolBar") self.toolBar.setMovable(True) #设置工具栏可移动 self.toolBar.setOrientation(QtCore.Qt.Horizontal) #设置工具栏为水平工具栏 self.toolBar.setToolButtonStyle(QtCore.Qt.ToolButtonTextUnderIcon)#设置工具栏中的按钮显示方式:文字显示在图标下方 self.toolBar.addAction(QtGui.QIcon("img/1.ico"),"新建") self.open = QtWidgets.QAction(QtGui.QIcon("img/2.ico"),"打开") self.close = QtWidgets.QAction(QtGui.QIcon("img/3.ico"), "关闭") self.toolBar.addActions([self.open, self.close]) # 创建一个ComboBox下拉列表控件 self.combobox = QtWidgets.QComboBox() # 定义职位列表 list = ["总经理", "副总经理", "人事部经理"] self.combobox.addItems(list) # 职位列表添加到ComboBox下拉列表中 self.toolBar.addWidget(self.combobox) # 将下拉列表添加到工具栏中 MainWindow.addToolBar(QtCore.Qt.BottomToolBarArea, self.toolBar) self.toolBar.setIconSize(QtCore.QSize(16, 16)) # 设置工具栏图标按钮大小 self.combobox.currentIndexChanged.connect(self.showinfo) self.toolBar.actionTriggered[QtWidgets.QAction].connect(self.getvalue) def getvalue(self,m): QMessageBox.information(MainWindow,"提示","您单击了"+m.text(),QMessageBox.Ok) def showinfo(self): QMessageBox.information(MainWindow,"提示","您选择的职位是:"+self.combobox.currentText(),QMessageBox.Ok) self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow) def retranslateUi(self, MainWindow): _translate = QtCore.QCoreApplication.translate MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow")) self.toolBar.setWindowTitle(_translate("MainWindow", "toolBar")) if __name__ == "__main__": import sys app = QtWidgets.QApplication(sys.argv) MainWindow = QtWidgets.QMainWindow() ui = Ui_MainWindow() ui.setupUi(MainWindow) MainWindow.show() sys.exit(app.exec_())
三、状态栏
1.状态栏类:QStatusBar
2.删除和添加状态栏
创建状态栏代码如下:
self.statusbar = QtWidgets.QStatusBar(MainWindow) self.statusbar.setObjectName("statusbar") MainWindow.setStatusBar(self.statusbar)
3.向状态栏中添加控件
self.label = QtWidgets.QLabel() self.label.setText("版权所有:xxx") self.statusbar.addWidgets(self.label)
4.在状态栏中显示和删除临时信息
self.statusbar.showMessage('当前登录用户:mr',0)#显示临时信息 self.statusbar.clearMessage()#清除临时信息
5.在状态栏中实时显示当前时间
from PyQt5 import QtCore, QtGui, QtWidgets class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(442, 407) self.centralwidget = QtWidgets.QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") MainWindow.setCentralWidget(self.centralwidget) self.statusBar = QtWidgets.QStatusBar(MainWindow) self.statusBar.setObjectName("statusBar") MainWindow.setStatusBar(self.statusBar) timer = QtCore.QTimer(MainWindow) timer.timeout.connect(self.showtime) timer.start() self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow) def showtime(self): datetime = QtCore.QDateTime.currentDateTime() text = datetime.toString("yyyy-MM-dd HH:mm:ss") self.statusBar.showMessage('当前日期时间:'+text,0) def retranslateUi(self, MainWindow): _translate = QtCore.QCoreApplication.translate MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow")) if __name__ == "__main__": import sys app = QtWidgets.QApplication(sys.argv) MainWindow = QtWidgets.QMainWindow() ui = Ui_MainWindow() ui.setupUi(MainWindow) MainWindow.show() sys.exit(app.exec_())
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/117761.html













