![66f25beeb686f25fa6d6c4dd9db7406d.png](https://img-blog.csdnimg.cn/img_convert/66f25beeb686f25fa6d6c4dd9db7406d.png)
就跟分类一样,我们可以把相同的控件放在一起,也可以把达到某项功能所需要的一些控件放在一起等等,合理运用这两个控件可以让界面更加清晰,用户体验度更好。
15.1 QGroupBox
我们来升级一下在第七章制作的开关灯泡小程序,完成后截图如下:
![ee2da7374439002408607bee48228f90.png](https://img-blog.csdnimg.cn/img_convert/ee2da7374439002408607bee48228f90.png)
可以看出在这个程序中,左边的QGroupBox放着On和Off按钮,而右边的QGrouoBox则放着各种颜色按钮。该程序不仅可以开关灯泡,还可以改变灯泡的颜色,代码如下:
import sys
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QPixmap
from PyQt5.QtWidgets import QApplication, QWidget, QGroupBox, QRadioButton, QLabel, QHBoxLayout, QVBoxLayout
class Demo(QWidget):
def __init__(self):
super(Demo, self).__init__()
self.groupbox_1 = QGroupBox('On and Off', self) # 1
self.groupbox_2 = QGroupBox('Change Color', self)
self.red = QRadioButton('Red', self) # 2
self.blue = QRadioButton('Blue', self)
self.green = QRadioButton('Green', self)
self.yellow = QRadioButton('Yellow', self)
self.color_list = [self.red, self.blue, self.green, self.yellow]
self.on = QRadioButton('On', self) # 3
self.off = QRadioButton('Off', self)
self.pic_label = QLabel(self) # 4
self.h1_layout = QHBoxLayout()
self.h2_layout = QHBoxLayout()
self.h3_layout = QHBoxLayout()
self.all_v_layout = QVBoxLayout()
self.layout_init()
self.radiobutton_init()
self.label_init()
def layout_init(self):
self.h1_layout.addWidget(self.on)
self.h1_layout.addWidget(self.off)
self.groupbox_1.setLayout(self.h1_layout)
self.h2_layout.addWidget(self.red)
self.h2_layout.addWidget(self.blue)
self.h2_layout.addWidget(self.green)
self.h2_layout.addWidget(self.yellow)
self.groupbox_2.setLayout(self.h2_layout)
self.h3_layout.addWidget(self.groupbox_1)
self.h3_layout.addWidget(self.