• qtdesigner添加菜单栏工具栏及监听事件



    前言

    学习了qtdesigner菜单栏和工具栏的有关知识,在此记录下来,方便以后参考。


    提示:以下是本篇文章正文内容,下面案例可供参考

    一、添加菜单栏

    创建Main Window的新窗体
    在这里插入图片描述
    创建之后会默认帮你创建菜单栏
    在这里插入图片描述
    之后双击就可以添加新的菜单项
    在这里插入图片描述
    如上图,双击菜单子项就可以添加对应的菜单项的子项
    注意,这里会有个小bug,就是你直接双击之后是输入不了中文的,要先随便输入一个数字或者字母之后,再在动作编辑器里面修改名字为中文
    在这里插入图片描述
    在这里插入图片描述
    单纯的文字看起来界面过于单调,可以添加些图标使得页面更加美观(注意:只能对应动作,即上面所说的菜单子项添加图标)
    双击对应动作,在图标那些选择图标文件
    在这里插入图片描述
    之后可以看到图标已经添加上去了
    在这里插入图片描述

    二、添加工具栏

    选择窗口类,右键点击,选择添加工具栏
    在这里插入图片描述
    如何添加工具栏里面的内容呢?其实工具栏里面放的也是动作,在动作编辑器里面选中刚刚新建的动作,然后拖到工具栏里面即可。
    在这里插入图片描述

    三、动作点击事件监听

    按照上面的方法多创建一个动作,命名如下
    在这里插入图片描述
    保存之后输入下面命令将ui文件转换成py文件(ui文件命名为tool_demo):

    pyuic5 -o tool_demo_ui.py tool_demo.ui
    
    • 1

    注意,转换的代码不能直接运行,需要创建一个py文件去读取界面代码并且展示,代码如下
    tool_demo.py

    from PyQt5.QtWidgets import QMainWindow, QApplication
    import sys
    
    from tool_demo_ui import Ui_MainWindow
    
    
    class MainWin(QMainWindow, Ui_MainWindow):
        def __init__(self):
            super().__init__()
            self.setupUi(self)
    
    
    if __name__ == '__main__':
        app = QApplication(sys.argv)
        main_win = MainWin()
        main_win.show()
        sys.exit(app.exec_())
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    运行结果:
    在这里插入图片描述
    动作点击监听函数是triggered,这里设置功能:点击对应动作弹出对应弹窗。
    注意:因为菜单栏和工具栏都是同一个动作,所以写一个监听函数就好了
    代码修改如下:
    tool_demo.py

    from PyQt5.QtWidgets import QMainWindow, QApplication, QMessageBox
    import sys
    
    from tool_demo_ui import Ui_MainWindow
    
    
    class MainWin(QMainWindow, Ui_MainWindow):
        def __init__(self):
            super().__init__()
            self.setupUi(self)
            # 调用监听函数
            self.controller()
    
        # 监听事件都放在这里面
        def controller(self):
            self.network_action.triggered.connect(self.network)
            self.version_action.triggered.connect(self.version)
    	
    	# 网路动作按钮点击事件
        def network(self):
            QMessageBox.about(self, '网络', '点击了网络动作')
    	
    	# 版本动作按钮店址事件
        def version(self):
            QMessageBox.about(self, '版本', '点击了版本动作')
    
    
    if __name__ == '__main__':
        app = QApplication(sys.argv)
        main_win = MainWin()
        main_win.show()
        sys.exit(app.exec_())
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32

    运行结果:
    在这里插入图片描述

    有什么问题欢迎在评论区域留言

  • 相关阅读:
    Leetcode 151. Reverse Words in a String (Python)
    小程序中的事件处理
    汽车纵染压制专用液压机比例阀放大器
    数据库基础理论
    RedisTemplate乱码问题
    《统计学习方法》第十九章 马尔可夫链蒙特卡罗法
    MongoDB脑裂恢复
    MySQL中的死锁预防和解决
    ROS Costmap 插件
    麒麟V10SP01部署docker报错:http:invalid Host header
  • 原文地址:https://blog.csdn.net/fresh_nam/article/details/126345670