学习了PyQt5制作菜单和工具条,期间遇到一些问题,现在都一一解决了,心情大好。
是在PyCharm20.1中编写的代码。
首先引入库
import sys
from PyQt5 import QtWidgets,QtGui,QtCore
from PyQt5.QtCore import Qt
import time,datetime
初始化界面,包括了界面的标题、大小尺寸、标签和按钮控件。
'''初始化界面'''
def InitGUI(self):
self.resize(800, 600)
self.setWindowTitle('菜单和工具条')
self.setWindowIcon(QtGui.QIcon('favicon.ico'))
'''设置标签,lable0用于实时显示时间'''
self.label0 = QtWidgets.QLabel(self)
timer = QtCore.QTimer(self.label0)
timer.timeout.connect(self.showtime)
timer.start()
self.label1 = QtWidgets.QLabel(self)
self.label1.setText('这是一个测试菜单和工具条的程序')
'''设置状态栏'''
self.statusBar().addPermanentWidget(self.label1)
self.statusBar().addPermanentWidget(self.label0)
'''设置按钮'''
self.button = QtWidgets.QPushButton(self)
self.button.setText('点击')
self.button.setGeometry(QtCore.QRect(100,20,100,120))
self.button.move(200,300)
'''单击退出操作'''
self.button.clicked.connect(self.ModifyStatusBar)
制作菜单栏
这里注意,添加菜单时,采用
self.Menubar1 = self.menuBar()
能自动实现布局
'''添加菜单函数'''
def AddMenu(self):
'''
设置菜单的动作
'''
self.Action1 = QtWidgets.QAction(QtGui.QIcon('favicon.ico'),'新建',self)#可以添加图标
self.Action1.setShortcut('Ctrl+N')
self.Action2 = QtWidgets.QAction('打开',self)
self.Action3 = QtWidgets.QAction('保存',self)
self.Action4 = QtWidgets.QAction('退出',self)
self.Action4.setShortcut('Ctrl+Q')
self.Action4.triggered.connect(quit)
self.Action5 = QtWidgets.QAction('撤回',self)
'''添加菜单'''
self.Menubar1 = self.menuBar() #因为是MainWindow,所以采用self.menuBar(),如果用QtWidgets.MenuBar(self),则会出现位置不对的情况
'''添加第一组菜单'''
self.menu1 = self.Menubar1.addMenu('文件')
self.menu1.addAction(self.Action1)
self.menu1.addAction(self.Action2)
self.menu1.addAction(self.Action3)
self.menu1.addAction(self.Action4)
'''添加第二组菜单'''
self.menu2 = self.Menubar1.addMenu('编辑')
然后添加工具条:
工具条中用
self.toobar1.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)#文件图片并排排列
工具条文本和位图同时显示
'''添加工具条函数'''
def AddToolbar(self):
'''创建工具条的动作'''
self.ToolActions1 = QtWidgets.QAction(QtGui.QIcon('favicon.ico'),'新建',self)
self.ToolActions1.setToolTip('新建')
self.ToolActions1.setIconText('新建')
self.ToolActions2 = QtWidgets.QAction('打开',self)
'''添加工具条'''
self.toobar1 = self.addToolBar('打开')
'''为工具条添加动作'''
self.toobar1.addAction(self.ToolActions1)
# toolbar.setToolButtonStyle(Qt.ToolButtonTextUnderIcon) # 文字图片垂直排列
self.toobar1.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)#文件图片并排排列
self.toobar1.addAction(self.ToolActions2)
设计标签时间更新和按钮操作的函数
def ModifyStatusBar(self):
self.num += 1
self.timestr = datetime.datetime.now()
self.label1.setText('这是第 %d' % (self.num) + ' 次点击'+' '+str(self.timestr))
def showtime(self):
self.label0.setText(" " + str(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())))
然后,编写主函数调用
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
GUI = MyMainWindow()
GUI.show()
sys.exit(app.exec_())
实现效果如下:
按钮“点击”: