设置按钮可见度为 0
每种控件都有 3 种设置可见度为 0 的方法,下面来拿按钮的来举例了。
# 标准的隐藏 # 方法一: self.pushButton_3.hide() # 方法二: self.pushButton_3.setHidden(True) # 方法三: self.pushButton_3.setVisible(False)
如果是绝对布局的话,隐藏当然不会影响位置的变化,但大家都知道绝对布局有很多缺点,比如改动的成本大,灵活性不高,适应能力很差等等。
我们习惯嵌套在一些横向和纵向布局里,但是这种布局只要是里面的控件不可见,就相当于没有了,所以会重新分配各个组件的位置,这样我们的整体布局就会有所变化。
设置按钮透明度,保留原位置
透明和不可见可不一样,透明是一种颜色。
op = QtWidgets.QGraphicsOpacityEffect() # 设置透明度的值,0.0到1.0,最小值0是透明,1是不透明 op.setOpacity(0) self.pushButton_3.setGraphicsEffect(op)
注:设置透明后,控件虽然看不见,但是点击那个位置还是会触发原控件绑定的事件。
如果想追求完美的话,可以在设置透明的同时,解除那个控件绑定的事件。
还提供一种思路,比如,我设置布局里每个按钮自己单独包裹一层布局,可以设置布局的最小宽度和高度,这样标准的隐藏的按钮看不到按钮了,但是仍然还保留着位置的,因为这里还有一个有最小值的布局给占着位置呢!哈哈,怎么样!
实例展示
如图,我想隐藏左边的录制脚本按钮。
左边的这组按钮嵌套在一个横向布局里。
这是设置可见度为 0 的效果,发现布局已经变了。
这个是设置了透明度为 0.5 的半透明状态
这个是设置透明度为 0 的全透明状态,发现布局没有变化。
喜欢的点个赞❤吧!