PyQt中如何隐藏Menu

PyQt中隐藏一个Menu Item,可以通过QAction的setVisible(False)来设置,而QMenu的setVisible(False)是不管用的。

现在问题来了,我们有一个菜单,它有一些子菜单,如何隐藏它呢?

fileMenu = self.menuBar().addMenu(‘File‘)
self.newMenu = fileMenu.addMenu(‘New‘)
self.newMenu.addAction(‘New Work‘)
self.newMenu.addAction(‘New Excel‘)
这时通过self.newMenu.setVisible(False),并不能达到目的,要解决这个问题,还得通过QAction的setVisible(False)来处理。

新建一个QMenu对象,然后通过QAction addMenu (self, QMenu)来得到QAction对象。

fileMenu = self.menuBar().addMenu(‘File‘)
self.newMenu = QtGui.QMenu(fileMenu)
self.newMenu.setTitle(‘New‘)
self.newMenu.addAction(‘New Word‘)
self.newMenu.addAction(‘New Excel‘)
self.newAction = fileMenu.addMenu(self.newMenu)
这时再通过这个QAction对象的setVisible(False)就可以了。

测试代码如下:

# -*- coding: utf-8 -*-
from PyQt4 import QtGui, QtCore

class MainWindow(QtGui.QMainWindow):
def __init__(self, parent=None):
QtGui.QMainWindow.__init__(self, parent)
fileMenu = self.menuBar().addMenu(‘File‘)
self.newMenu = QtGui.QMenu(fileMenu)
self.newMenu.setTitle(‘New‘)
self.newMenu.addAction(‘New Word‘)
self.newMenu.addAction(‘New Excel‘)
self.newAction = fileMenu.addMenu(self.newMenu)
self.saveAction = fileMenu.addAction(‘Save‘)

editMenu = self.menuBar().addMenu(‘Edit‘)
hideAction = editMenu.addAction(‘Hide‘)
self.connect(hideAction, QtCore.SIGNAL(‘triggered()‘), self.hideMenu)

def hideMenu(self):
self.newAction.setVisible(False)
self.saveAction.setVisible(False)

if __name__ == ‘__main__‘:
import sys
app = QtGui.QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())

时间: 2024-08-09 02:09:10

PyQt中如何隐藏Menu的相关文章

深夜话题boot2docker还有那些隐藏MENU

马克思的博士论文:自由意识的集中表达 --字体我设为5(18pt),你们懂的 总有人埋汰,终于我想起一个负负得正的话题 为什么放在深夜,因为希望看到的人越少越好,深夜是时差党的乐园 本篇作为之前几篇围绕docker展开的随笔的最后一篇,也是最没有格调,最肤浅的一篇 今人说万丈高楼平地起,勿在浮沙筑高台 这句话变成了很多人嘴里的金科玉律,常用于教导别人 而我只会用一个粗鄙的问题:作为一名沙雕选手,你最关心的是什么??? 很少有人知道答案,或许他们明明知道,缺不想做沙雕 人各有志,沙雕也有沙雕的意义

Android中ActionBar以及menu的代码设置样式

Android中ActionBar以及menu的代码样式如何设置?今天麦子学院android开发老师主要介绍Android中ActionBar以及menu的代码设置样式,,有需求的朋友可以参阅下 menu有些xml代码 http://schemas.android.com/apk/res/android"> <="" div=""> android:title="查找1" android:orderInCategory

C++中名字隐藏,名字查找优先于类型检查

题目 C++中名字隐藏是什么? 解答 让我们通过一个例子来讲解C++中的名字隐藏.在C++中,如果一个类里有一个重载的方法, 你用另一个类去继承它并重写(覆盖)那个方法.你必须重写所有的重载方法, 否则未被重写的方法会因为名字相同而被隐藏,从而使它在派生类中不可见. 请看例子: class FirstClass{ public: virtual void MethodA(int); virtual void MethodA(int, int); }; void FirstClass::Metho

在PADS LAYOUT中如何隐藏不需要的鼠线?

如下图示,将net GPR_0的鼠线隐藏. 鼠标右键,选择网络----选择你要隐藏的网络------右键选择view nets----点击对话框右边View List里你所选的网络-----在右下角traces plus the....和None两个打勾,点Apply,就ok了. 在PADS LAYOUT中如何隐藏不需要的鼠线?,布布扣,bubuko.com

CSS圆角效果 -webkit-border-radius(CSS3中border-radius隐藏的威力)

CSS圆角效果 -webkit-border-radius(CSS3中border-radius隐藏的威力) 来源:互联网 作者:佚名 时间:03-28 14:17:14 [大 中 小] border-radius:用这个属性能实现圆角边框的效果.现在只有Mozilla/Firefox 和 Safari 3支持该属性. -webkit-border-radius:苹果:谷歌,等一些浏览器认,因为他们都用的是webkit内核: -moz-border-radius:moz这个属性 主要是专门支持M

Android中的隐藏API和Internal包的使用之获取应用电量排行

今天老大安排一个任务叫我获取手机中应用耗电排行(时间是前天晚上7点到第二天早上10点),所以在网上各种搜索,没想到这种资料还是很多的,发现了一个主要的类:PowerProfile,但是可以的是,这个类没有曝光给我们开发者,所以我们不能调用它 那怎么办呀?,还是有办法的,这个类是藏在:com.android.internal.os.PowerProfile com.android.internal.os.PowerProfile.PowerProfile这个类就是负责解析记录文件,我们可以创建一个

pyqt中使用matplotlib绘制动态曲线 – pythonic

一.项目背景: 看了matplotlib for python developers这本书,基本掌握了在pyqt中显示曲线的做法,于是自己写一个. 二.需求描述: 1)X轴显示时间点,显示长度为1分钟,每一秒钟绘制一个点,X轴长度超过1分钟,则左移1秒刻度,实现动态效果 2)Y轴显示随机变化的数值,1-100 三.准备工作 1环境:python3.3,eric5,pyqt4 四.开始动手 : 使用Eric创建新项目: 在设计编码前期主要用到Eric的两个窗口:源码和窗体浏览器,类似delphi.

Pyqt 中__init__(self,parent==None) parent理解

参考: 在PyQt中,所有class都是从QObject派生而来,QWidget对象就可以有一个parent.这种parent-child关系主要用于两个方面: 没有parent的QWidget类被认为是最上层的窗体(通常是MainWindow),由于MainWindow的一些操作生成的新窗体对象,parent都应该指向MainWindow. 由于parent-child关系的存在,它保证了child窗体在主窗体被回收之时也被回收. parent作为构造函数的最后一个参数被传入,但通常情况下不必

关于在C#中对类中的隐藏基类方法和重写方法的理解

最近在学习C#,在C#中的类看到重写和隐藏基类的方法这些概念.才开始感觉自己不是很理解这些概念.也区分不开这些概念.通过自己的查找资料和练习后.慢慢的理解了类中的隐藏和重写这个概念.在C#中只有在基类定义了一些虚方法才能在派生类中重写基类中的虚方法.但是如果在派生类中使用隐藏方法,就不用在基类中定义虚方法.虚方法和重写实现的功能感觉是差不多的.都是在派生类中改变了基类中的方法,但是两者还是有质的区别,概念的性质也是不一样的.   重写是指:将基类中的方法替换掉,也就是抹掉基类中的原有方法,在派生