基于PyQt5实现状态栏(statusBar)显示和隐藏功能

首先,讲述要解决的两个问题以及解决问题的代码:

1、将鼠标放置于菜单栏上状态栏永久消失的问题(这个问题需要仔细观察才能注意到)

    # 此覆盖父类函数: 覆盖方法; 为了克服 将鼠标放置于菜单栏上 状态栏就消失的问题;
    def event(self, QEvent):
        if QEvent.type() == QEvent.StatusTip:
            if QEvent.tip() == "":
                QEvent = QStatusTipEvent("ready!")  # 此处为要始终显示的内容
        return super().event(QEvent)

2、控制状态栏显示和隐藏的问题

   def toggleMenu(self, state):  # 自定义事件函数
        print(state)
        # if state:
        #     self.statusBar().showMessage("ready!")
        # else:
        #     self.statusBar().showMessage("")
        # if state:  # 控制状态栏是否显示,
        #     self.statusbar().show()  # 此处是错误示例
        # else:
        #     self.statusbar().hide()

        if state:  # 应该使用statusBar() 而不是 statusbar
            self.statusBar().show()
        else:
            self.statusBar().hide()

最近学习pyqt5教程,也是别人翻译的,总的也是错误多多,应该直接看原版的,充分表明英语很重要啊……

贴上全部代码:

import sys
from PyQt5.QtWidgets import QMainWindow, QApplication, QAction, qApp, QMenu
from PyQt5.QtGui import QIcon, QStatusTipEvent

class main_window(QMainWindow):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        # 可以设置 动作的图标, 文字显示; 强大
        exitAct = QAction(QIcon("/Users/zuozhe/PycharmProjects/Soft-Video/images/m4.png"), "&退出", self)
        exitAct.setShortcut("Ctrl+Q")  # 设置快捷键
        exitAct.setToolTip("Exit Application")  # 提示
        exitAct.triggered.connect(qApp.exit)  # 绑定退出事件

        status = self.statusBar()  # 创建状态栏
        status.showMessage("ready!")  # 显示消息

        # 菜单栏
        # 文件菜单栏
        menubar = self.menuBar()
        menubar.setNativeMenuBar(False)  # MAC OS 下需要设置此句话
        fileMenu = menubar.addMenu("&File")  # 主菜单File

        impMenu = QMenu("Import", self)  # 创建菜单项
        impAct = QAction("Import Email", self)  # Import菜单下有子菜单 Import Email
        impMenu.addAction(impAct)

        newAct = QAction("New", self)
        # 就差 给 Action(动作)绑定触发事件了
        fileMenu.addAction(newAct)  # 将两个菜单项加入到 File主菜单栏下
        fileMenu.addMenu(impMenu)
        fileMenu.addAction(exitAct)  # 绑定 File下的菜单项
        # 编辑菜单栏
        editMenu = menubar.addMenu("&Edit")

        # 视图菜单栏
        viewMenu = menubar.addMenu("&View")
        # 勾选菜单
        viewstatAct = QAction("是否显示状态栏", self, checkable=True)
        viewstatAct.setToolTip("View statusbar")
        viewstatAct.setChecked(True)
        viewstatAct.triggered.connect(self.toggleMenu)  # 触发链接事件; toggleMenu是自定义函数
        viewMenu.addAction(viewstatAct)

        # 设置窗口的 位置和大小
        self.setGeometry(300, 300, 500, 600)
        self.setWindowTitle("主窗口的菜单栏和工具栏")
        self.show()

    # 此覆盖父类函数: 覆盖方法; 为了克服 将鼠标放置于菜单栏上 状态栏就消失的问题;
    def event(self, QEvent):
        if QEvent.type() == QEvent.StatusTip:
            if QEvent.tip() == "":
                QEvent = QStatusTipEvent("ready!")  # 此处为要始终显示的内容
        return super().event(QEvent)

    def toggleMenu(self, state):  # 自定义事件函数
        print(state)
        # if state:
        #     self.statusBar().showMessage("ready!")
        # else:
        #     self.statusBar().showMessage("")
        # if state:  # 控制状态栏是否显示,
        #     self.statusbar().show()
        # else:
        #     self.statusbar().hide()

        if state:  # 应该使用statusBar() 而不是 statusbar
            self.statusBar().show()
        else:
            self.statusBar().hide()

if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = main_window()
    sys.exit(app.exec_())

到此这篇关于基于PyQt5实现状态栏(statusBar)显示和隐藏功能的文章就介绍到这了,更多相关PyQt5状态栏显示 隐藏内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • PyQt5 实现状态栏永久显示消息

    前言: 课程设计打算用qt和python做一个上位机,现在的需求是要在状态栏永久显示串口号.波特率.状态栏的自身的方法无法让信息长久保留,但是我们可以为状态栏永久添加小控件 QStatusBar添加删除小控件的方法: 方法 描述 addPermanentWidget() 在状态栏中永久添加给定的窗口小控件对象 removeWidget() 从状态栏中移除指定的小控件 实例代码如下: import sys from PyQt5.QtWidgets import * class windows(QM

  • python GUI库图形界面开发之PyQt5状态栏控件QStatusBar详细使用方法实例

    PyQt5状态栏控件QStatusBar简介 MainWindow对象在底部保留有一个水平条,作为状态栏(QstatusBar),用于显示永久或临时的状态信息 QStatusBar类中的常用方法 方法 描述 addWidget() 在状态栏中添加给定的窗口小控件对象 addPermanentWidget() 在状态栏中永久添加给定的窗口小控件对象 showMessage() 在状态栏显示一条临时信息,指定时间间隔 clearMessage() 删除正在显示的临时信息 removeWidget()

  • python3.x+pyqt5实现主窗口状态栏里(嵌入)显示进度条功能

    1.代码1: (1)进度条等显示在主窗口状态栏的右端,代码如下: from PyQt5.QtWidgets import QMainWindow, QProgressBar, QApplication, QLabel import sys class SampleBar(QMainWindow): """Main Application""" def __init__(self, parent = None): print('Starting t

  • 基于PyQt5实现状态栏(statusBar)显示和隐藏功能

    首先,讲述要解决的两个问题以及解决问题的代码: 1.将鼠标放置于菜单栏上状态栏永久消失的问题(这个问题需要仔细观察才能注意到) # 此覆盖父类函数: 覆盖方法: 为了克服 将鼠标放置于菜单栏上 状态栏就消失的问题: def event(self, QEvent): if QEvent.type() == QEvent.StatusTip: if QEvent.tip() == "": QEvent = QStatusTipEvent("ready!") # 此处为要

  • vue基于input实现密码的显示与隐藏功能

    前言 大家都知道,一般情况下,输入框的密码我们是看不到密码的,只有当我们点击查看密码的小图标时,密码才会显现出来,实现起来也非常简单,通过点击图标让input的type属性变化即可.但是隐藏的密码一般是 "•" 展示,那我们想要用 "*" 或者其他的符号显示该怎么办呢,今天就教大家用其他的符号代替 "•" 在密码隐藏时展示. 实现效果 实现思路 1.首先我们要先在data中定义一个变量用来控制小图标的显示与隐藏:2.在页面中循环遍历data中的p

  • 基于vue 实现表单中password输入的显示与隐藏功能

    实现效果: 点击 "眼睛" 的时候显示与隐藏 代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <link href="css/bootstrap.min.css" rel="external nofollow" rel="stylesheet">

  • Vue基于iview实现登录密码的显示与隐藏功能

    目录 1.背景 2.实现最终效果 2.1 隐藏密码 2.2 显示密码 3.实现思路 3.1 v-if判断当前密码显示状态 3.2 密码隐藏状态 3.3 密码显示状态 3.4 两种眼睛图标(睁眼,闭眼)的监听切换密码显示状态事件 4.小结 iview简介 iView 是一套基于 Vue.js 的开源 UI 组件库,主要服务于 PC 界面的中后台产品. 1.背景 近期,在使用abp开发项目过程中,前端vue输入登录密码时默认隐藏,但是如果用户输错密码需要切换显示跟隐藏.故有此文. 2.实现最终效果

  • AngularJS实现DOM元素的显示与隐藏功能

    本文实例讲述了AngularJS实现DOM元素的显示与隐藏功能.分享给大家供大家参考,具体如下: DOM元素的显示与隐藏 ,是前端开发中常常会用到的功能,AngularJS中是使用 ng-hide/ng-show 两个属性来实现的其实我们只要使用其中的一个属性即可实现所有功能他们的取值为 boolean. [HTML代码] <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <m

  • 基于JavaScript实现评论框展开和隐藏功能

    1.效果图如下所示, 点击评论会在对应的评论区域展开评论输入框,点击取消会取消对应的评论输入框 2.html代码:需要引入jQuery.js <div class="nr-comment"> <div class="nr-comment-con"> <div class="nr-comment-nav"> <div class="comment-number"> <span

  • Android 密码 显示与隐藏功能实例

    效果: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android

  • jQuery仅用3行代码实现的显示与隐藏功能完整实例

    本文实例讲述了jQuery仅用3行代码实现的显示与隐藏功能.分享给大家供大家参考.具体如下: jQuery技术相当好使用,的确可以用很少的代码实现想要的功能,比如这款经常用到的"显示"与"隐藏"的功能,只需要3行代码就实现了,确实够给力. 运行效果截图如下: 在线演示地址如下: http://demo.jb51.net/js/2015/jquery-simple-hide-show-style-demo/ 具体代码如下: <!doctype html>

  • 微信小程序之多列表的显示和隐藏功能【附源码】

    今天在项目碰到一个问题,之前在项目首页实现单列表的显示和隐藏,通过wx:if判断就可实现,现在要实现多列表的单项显示和隐藏功能应该如何实现呢?如果还用wx:if实现的话会出现点击一个列表项,多个列表同时显示和隐藏,明显不适合功能需求,然后简单地查了资料也没发现有类似的功能,最后思考一番后,慢慢地理清了思路... 效果图: 实现思路: 实现单个列表的显示和隐藏应该使用唯一元素让程序知道你应该显示和隐藏哪个列表项,可以用数据的id: css中定义一个hidden{display:none}控制显示和

  • vue.js使用v-if实现显示与隐藏功能示例

    本文实例讲述了vue.js使用v-if实现显示与隐藏功能.分享给大家供大家参考,具体如下: <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1

随机推荐