工具栏

工具栏是最常见的用户界面元素之一。工具栏是用于在应用程序中执行常见任务的图标和文本栏。

Qt工具栏支持图标,文本的显示,还可以包含任何标准Qt小部件。但是,对于按钮,最好的方法是利用QAction系统在工具栏上放置按钮。

让我们从向应用程序添加工具栏开始。

在Qt中,从QToolBar类创建工具栏。首先,创建该类的实例,然后调用.addToolbar。传入字符串作为第一个参数来设置工具栏的名称,该名称将用于在UI中标识工具栏。

import sysimport requestsimport jsonfrom PyQt5.QtCore import Qt

from PyQt5.QtWidgets import QWidgetfrom PyQt5.QtWidgets import QApplicationfrom PyQt5.QtWidgets import QDesktopWidget, QMessageBox, QLabel, QPushButton, QActionfrom PyQt5.QtWidgets import QLineEdit, QTextEditfrom PyQt5.QtWidgets import QStatusBar from PyQt5.QtWidgets import QToolBarfrom PyQt5.QtWidgets import QMainWindow 

class MainWindow(QMainWindow):

def __init__(self, *args, **kwargs):        super(MainWindow, self).__init__(*args, **kwargs)

        self.setWindowTitle("高效码农")

        label = QLabel("高效码农")        label.setAlignment(Qt.AlignCenter)

        self.setCentralWidget(label)

        toolbar = QToolBar("高效码农 Toolbar")        self.addToolBar(toolbar)        self.show()

def onMyToolBarButtonClick(self, s):        print("click", s)

if __name__ == '__main__':    app = QApplication(sys.argv)    tools = MainWindow()    sys.exit(app.exec_())pass

运行效果:

我们应该使工具栏更有趣一些。我们可以只添加一个QButton部件,但在Qt中还有一个更好的方法可以让你获得一些很酷的特性——那就是通过QAction。QAction是一个类,它提供了一种描述抽象用户接口的方法。在英语中,这意味着您可以在一个对象中定义多个接口元素,通过与该元素交互的效果来统一这些元素。例如,在工具栏和菜单中都有一些函数表示,比如Edit——>Cut,它既出现在编辑菜单中,也出现在工具栏上,就像剪刀一样,也可以通过快捷键Ctrl-X (Mac上的Cmd-X)。

如果没有QAction,就必须在多个地方定义它。但是使用QAction,您可以定义单个QAction,定义被触发的动作,然后将这个动作添加到菜单和工具栏中。每个QAction都有您可以连接的名称、状态消息、图标和信号(以及更多)。

在下面的代码中,您可以看到添加了第一个QAction。

import sysfrom PyQt5.QtCore import Qt

from PyQt5.QtWidgets import QWidgetfrom PyQt5.QtWidgets import QApplicationfrom PyQt5.QtWidgets import QDesktopWidget, QMessageBox, QLabel, QPushButton, QActionfrom PyQt5.QtWidgets import QLineEdit, QTextEditfrom PyQt5.QtWidgets import QStatusBar from PyQt5.QtWidgets import QToolBarfrom PyQt5.QtWidgets import QMainWindow 

class MainWindow(QMainWindow):

def __init__(self, *args, **kwargs):        super(MainWindow, self).__init__(*args, **kwargs)

        self.setWindowTitle("高效码农 App")

        label = QLabel("高效码农!!!")        label.setAlignment(Qt.AlignCenter)

        self.setCentralWidget(label)

        toolbar = QToolBar("高效码农 toolbar")        self.addToolBar(toolbar)

        button_action = QAction("高效码农 button", self)        button_action.setStatusTip("T高效码农 button")        button_action.triggered.connect(self.onMyToolBarButtonClick)        toolbar.addAction(button_action)        self.show()

def onMyToolBarButtonClick(self, s):        print("click", s)

if __name__ == '__main__':    app = QApplication(sys.argv)    tools = MainWindow()    sys.exit(app.exec_())pass

运行效果:

首先,我们创建接收QAction信号的函数,这样我们就可以看到它是否在工作。接下来我们定义QAction本身。在创建实例时,我们可以传递动作的标签和/或图标。您还必须传递任何QObject以作为操作的父对象——这里我们将self作为对主窗口的引用传递。

接下来,我们可以选择设置一个状态提示——一旦我们设置了一个状态提示,这个文本将显示在状态栏上。最后,我们将.triggered信号连接到定制函数。这个信号将在QAction被触发(或激活)时触发。

接下来我们可以添加一个状态栏。

我们通过调用QStatusBar来创建一个状态栏对象,以获得一个新的状态栏对象,然后将其传递给。setstatusbar。因为我们不需要改变状态栏的设置,我们也可以在创建时传入它:

import sysfrom PyQt5.QtCore import Qt

from PyQt5.QtWidgets import QWidgetfrom PyQt5.QtWidgets import QApplicationfrom PyQt5.QtWidgets import QDesktopWidget, QMessageBox, QLabel, QPushButton, QActionfrom PyQt5.QtWidgets import QLineEdit, QTextEditfrom PyQt5.QtWidgets import QStatusBar from PyQt5.QtWidgets import QToolBarfrom PyQt5.QtWidgets import QMainWindow 

class MainWindow(QMainWindow):

def __init__(self, *args, **kwargs):        super(MainWindow, self).__init__(*args, **kwargs)

        self.setWindowTitle("高效码农 App")

        label = QLabel("高效码农!!!")        label.setAlignment(Qt.AlignCenter)

        self.setCentralWidget(label)

        toolbar = QToolBar("高效码农 toolbar")        self.addToolBar(toolbar)

        button_action = QAction("高效码农 button", self)        button_action.setStatusTip("高效码农 button")        button_action.triggered.connect(self.onMyToolBarButtonClick)        toolbar.addAction(button_action)

        self.setStatusBar(QStatusBar(self))        self.show()

def onMyToolBarButtonClick(self, s):        print("click", s)

if __name__ == '__main__':    app = QApplication(sys.argv)    tools = MainWindow()    sys.exit(app.exec_())pass

运行效果:

接下来,我们将把QAction切换为toggleable——点击将选中它,再次点击将选中取消。为此,我们在QAction对象上调用setCheckable(True)。

import sysfrom PyQt5.QtCore import Qt

from PyQt5.QtWidgets import QWidgetfrom PyQt5.QtWidgets import QApplicationfrom PyQt5.QtWidgets import QDesktopWidget, QMessageBox, QLabel, QPushButton, QActionfrom PyQt5.QtWidgets import QLineEdit, QTextEditfrom PyQt5.QtWidgets import QStatusBar from PyQt5.QtWidgets import QToolBarfrom PyQt5.QtWidgets import QMainWindow 

class MainWindow(QMainWindow):

def __init__(self, *args, **kwargs):        super(MainWindow, self).__init__(*args, **kwargs)

        self.setWindowTitle("高效码农 App")

        label = QLabel("高效码农!!!")        label.setAlignment(Qt.AlignCenter)

        self.setCentralWidget(label)

        toolbar = QToolBar("高效码农 toolbar")        self.addToolBar(toolbar)

        button_action = QAction("高效码农 button", self)        button_action.setStatusTip("高效码农 button")        button_action.triggered.connect(self.onMyToolBarButtonClick)        button_action.setCheckable(True)        toolbar.addAction(button_action)

        self.setStatusBar(QStatusBar(self))        self.show()

def onMyToolBarButtonClick(self, s):        print("click", s)

if __name__ == '__main__':    app = QApplication(sys.argv)    tools = MainWindow()    sys.exit(app.exec_())pass

运行效果:

单击该按钮可以看到它从选中状态切换到未选中状态。注意,我们现在创建的自定义槽函数会交替输出'True'和'False'。

现在界面功能基本完善,但是很丑;让我们美化一下:

import sysfrom PyQt5.QtCore import Qtfrom PyQt5.QtCore import QSizefrom PyQt5.QtGui import QIcon

from PyQt5.QtWidgets import QWidgetfrom PyQt5.QtWidgets import QApplicationfrom PyQt5.QtWidgets import QDesktopWidget, QMessageBox, QLabel, QPushButton, QActionfrom PyQt5.QtWidgets import QStatusBar from PyQt5.QtWidgets import QToolBarfrom PyQt5.QtWidgets import QMainWindow 

class MainWindow(QMainWindow):

def __init__(self, *args, **kwargs):        super(MainWindow, self).__init__(*args, **kwargs)

        self.setWindowTitle("高效码农 App")

        label = QLabel("高效码农!!!")        label.setAlignment(Qt.AlignCenter)

        self.setCentralWidget(label)

        toolbar = QToolBar("My main toolbar")        toolbar.setIconSize(QSize(16,16))        self.addToolBar(toolbar)

        button_action = QAction(QIcon("user.png"), "Your button", self)        button_action.setStatusTip("This is your button")        button_action.triggered.connect(self.onMyToolBarButtonClick)        button_action.setCheckable(True)        toolbar.addAction(button_action)

        self.setStatusBar(QStatusBar(self))        self.show()

def onMyToolBarButtonClick(self, s):        print("click", s)

if __name__ == '__main__':    app = QApplication(sys.argv)    tools = MainWindow()    sys.exit(app.exec_())pass

运行结果:

精美的16x16图标

下载地址:https://www.xugj520.cn/usr/uploads/2020/08/2366200963.zip

图片和内容源自网络分享,若有侵权,请联系删除!

上海艾磊科技有限公司专门为企业提供IT咨询,IT外包,系统集成,以及各类IT增值服务。其中增值服务包括OFFICE 365云服务,鼎捷企业ERP管理软件,云备份,企业邮箱,无线覆盖,上网行为管理,VPN架设,网络安全服务,INTERNET接入,设备租赁, IP电话服务

python gui界面实例_Python界面(GUI)编程PyQt5工具栏和菜单相关推荐

  1. python前端框架实例_Python数据可视化:PyQt5 + ECharts框架实例

    引言 对于Python下桌面软件的开发已经有了很多数据可视化的库,如Matplotlib.Seaborn.Pyqtgraph.Plotly等等,但这些库更适合于后端程序员的软件开发. 实际上在前端网页 ...

  2. python tkinter计算器实例_Python+tkinter使用80行代码实现一个计算器实例

    Python+tkinter使用80行代码实现一个计算器实例 本文主要探索的是使用Python+tkinter编程实现一个简单的计算器代码示例,具体如下. 闲话不说,直奔主题.建议大家跟着敲一遍代码, ...

  3. java 界面实例,javagui界面实例

    gui界面设计动态图实例,南宁UI设计培训学哪些知识,javagui界面设计实例,javagui界面实例 (整理)javaGUI开发初学经典案例._计算机软件及应用_IT/计算机_专业资... Jav ...

  4. python接口脚本实例_python图形用户接口实例详解

    本文实例为大家分享了python图形用户接口实例的具体代码,供大家参考,具体内容如下 运用tkinter图形库,模拟聊天应用界面,实现信息发送. from tkinter import * impor ...

  5. python闭包应用实例_Python中的闭包详细介绍和实例

    一.闭包 来自wiki: 闭包(Closure)是词法闭包(Lexical Closure)的简称,是引用了自由变量的函数.这个被引用的自由变量将和这个函数一同存在,即使已经离开了创造它的环境也不例外 ...

  6. python温度转换实例_Python温度转换实例分析

    Python温度转换实例分析 本文主要研究的是Python语言实现温度转换的相关实例,具体如下. 代码如下: #TempConvert.py val=input("请输入带有温度表示符号的温 ...

  7. python交互界面实例_Python面向对象编程扑克牌发牌程序,另含大量Python代码!

    1. 题目 编写程序, 4名牌手打牌,计算机随机将52张牌(不含大小鬼)发给4名牌手,在屏幕上显示每位牌手的牌. 很多人学习python,不知道从何学起. 很多人学习python,掌握了基本语法过后, ...

  8. python tkinter计算器实例_python库的tkinter带你进入GUI世界(计算器简单功能)

    #tkinter应用案例:设计一个简单计算器界面功能 from tkinter import * import tkinter as tk master = Tk() master.title(&qu ...

  9. 怎么设置python界面颜色_python界面编程之颜色篇

    python界面编程之颜色篇 (2018-03-20 22:42:26) python3使用tkinter做界面之颜色 2013年09月05日 ⁄ 综合 ⁄ 共 3135字 ⁄ 字号 ⁄ 评论关闭 f ...

最新文章

  1. Java对象序列化详解6,Java对象的序列化与反序列化详解
  2. leetcode算法题--不同路径
  3. Maximum XOR Sum 系列问题
  4. Web前端开发笔记——第二章 HTML语言 第九节 框架标签、脚本标签
  5. 提高数据库处理查询速度
  6. LeetCode 343. Integer Break
  7. 【java】spring-boot源码解析之应用启动
  8. GetWindowRect和GetClientRect
  9. java 获取类的注解_Java 自定义注解通过反射获取类、方法、属性上的注解
  10. MediaInfo源代码分析 3:Open()函数
  11. CC(Context Capture)软件安装及空三过程中的十大常见报错与解决方法
  12. html5css3背景下雪,HTML5 CSS3下雪奥运五环背景动画特效
  13. oracle imp仅导入数据
  14. Java下载Excel时文件名称乱码
  15. android软路由,软路由体验 篇一:  100块钱还要啥自行车,软路由初体验
  16. 软件类大学生求职就业攻略(四)——求职面试
  17. Day739.GEO经纬度数据结构自定义数据结构 -Redis 核心技术与实战
  18. HardSwish和HardSigmoid的关系
  19. 高级项目经理和项目经理的区别
  20. 网络OSI七层模型及各层作用

热门文章

  1. 又是毕业季I 【O(1)数论】(洛谷P1372题题解,Java语言描述)
  2. Java自引用造成的死循环
  3. 【JavaScript】在JavaScript中使用JSON进行序列化/反序列化操作
  4. php Switch语句
  5. txt形式进行传输WebShell图文演示!
  6. spring+springmvc+mybatis配置
  7. ecshop常用二次开发修改
  8. [UML]UML系列——用例图Use Case
  9. 轻松掌握IP子网划分的概念和操作方法
  10. 简单实现分行输出的javascript代码