PyQt5 技巧篇-按钮等控件的隐藏并保留位置 实例演示

时间:2024-03-31 10:48:53

设置控件的可见度为0
每种控件都有3种设置可见度为0的方法,下面来拿按钮的来举例了。

# 标准的隐藏
# 方法一:
self.pushButton_3.hide()
# 方法二:
self.pushButton_3.setHidden(True)
# 方法三:
self.pushButton_3.setVisible(False)

如果是绝对布局的话,隐藏当然不会影响位置的变化,但大家都知道绝对布局有很多缺点,比如改动的成本大,灵活性不高,适应能力很差等等。
我们习惯嵌套在一些横向和纵向布局里,但是这种布局只要是里面的控件不可见,就相当于没有了,所以会重新分配各个组件的位置,这样我们的整体布局就会有所变化。

但是我们设置控件的透明度,把透明度设置为0就好了,因为透明和不可见可不一样,透明是一种颜色。

op = QtWidgets.QGraphicsOpacityEffect()
# 设置透明度的值,0.0到1.0,最小值0是透明,1是不透明
op.setOpacity(0)
self.pushButton_3.setGraphicsEffect(op)

注:设置透明后,控件虽然看不见,但是点击那个位置还是会触发原控件绑定的事件。
如果想追求完美的话,可以在设置透明的同时,解除那个控件绑定的事件。

还提供一种思路,比如,我设置布局里每个按钮自己单独包裹一层布局,可以设置布局的最小宽度和高度,这样标准的隐藏的按钮看不到按钮了,但是仍然还保留着位置的,因为这里还有一个有最小值的布局给占着位置呢!哈哈,怎么样!

实例展示

如图,我想隐藏左边的录制脚本按钮。
左边的这组按钮嵌套在一个横向布局里。
PyQt5 技巧篇-按钮等控件的隐藏并保留位置 实例演示
这是设置可见度为0的效果,发现布局已经变了。
PyQt5 技巧篇-按钮等控件的隐藏并保留位置 实例演示
这个是设置了透明度为0.5的半透明状态
PyQt5 技巧篇-按钮等控件的隐藏并保留位置 实例演示
这个是设置透明度为0的全透明状态,发现布局没有变化。
PyQt5 技巧篇-按钮等控件的隐藏并保留位置 实例演示