PyQt5学习(一):制作菜单、工具条,并在状态栏中动态显示实时时间

学习了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_())

实现效果如下:

PyQt5学习(一):制作菜单、工具条,并在状态栏中动态显示实时时间_第1张图片

按钮“点击”:

PyQt5学习(一):制作菜单、工具条,并在状态栏中动态显示实时时间_第2张图片

 

你可能感兴趣的:(Python编程,PyQt5)