试图复现下面的图片
from PyQt6.QtWidgets import QApplication, QWidget, QVBoxLayout, QFormLayout, QGridLayout, QGroupBox, QSlider, QLineEdit, \
QLabel, QPushButton, QHBoxLayout
import sys
from PyQt6.QtCore import Qt
class MainWindows(QWidget):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.ui()
def ui(self):
self.setWindowTitle("组合控件测试")
self.resize(400, 300)
self.show()
####################################
# 主布局
####################################
main_layout = QVBoxLayout()
f_layout2 = QFormLayout()
f_layout = QFormLayout()
####################################
# 年龄
####################################
self.age_group = QGroupBox("年龄设置")
self.name_group = QGroupBox("姓名设置")
self.age_label_slider = QSlider()
self.age_label_slider.setOrientation(Qt.Orientation.Horizontal) # 设置滑块的方向
self.age_label_slider.setRange(0, 100) # 设置滑块的范围
self.ageChange_int_edit = QLineEdit()
self.ageChange_int_edit.setAlignment(Qt.AlignmentFlag.AlignLeft) # 设置edit栏文字对齐方式
self.ageChange_str_edit = QLineEdit()
self.ageChange_str_edit.setAlignment(Qt.AlignmentFlag.AlignLeft)
####################################
# 姓名
####################################
self.name_edit = QLineEdit()
self.name_edit.setAlignment(Qt.AlignmentFlag.AlignLeft)
self.button_name = QPushButton("设置姓名")
self.name_edit2 = QLineEdit()
self.name_edit2.setAlignment(Qt.AlignmentFlag.AlignLeft)
h_layout = QHBoxLayout()
h_layout.addWidget(self.name_edit)
h_layout.addWidget(self.button_name)
f_layout2.addRow("输入姓名", h_layout)
f_layout2.addRow("nameChanged(str)响应", self.name_edit2)
# 控件添加到布局中
f_layout.addRow("设置年龄(1~100)", self.age_label_slider)
f_layout.addRow("ageChanged(int)响应", self.ageChange_int_edit)
f_layout.addRow("ageChanged(str)响应", self.ageChange_str_edit)
self.age_group.setLayout(f_layout)
self.name_group.setLayout(f_layout2)
main_layout.addWidget(self.age_group)
main_layout.addWidget(self.name_group)
self.close_button = QPushButton("关闭")
main_layout.addWidget(self.close_button)
self.setLayout(main_layout)
####################################
# 信号和槽
####################################
self.age_label_slider.sliderMoved.connect(self.age_label_slider_function)
self.button_name.clicked.connect(self.button_name_function)
self.close_button.clicked.connect(self.close_button_function)
def age_label_slider_function(self):
slider_value = self.age_label_slider.value()
self.ageChange_int_edit.setText(str(slider_value))
if int(slider_value) < 40:
self.ageChange_str_edit.setText("您正值中年")
elif int(slider_value) >= 40 and int(slider_value) < 70:
self.ageChange_str_edit.setText("您已经步入老年")
else:
self.ageChange_str_edit.setText("您高寿了")
def button_name_function(self):
name_value = self.name_edit.text()
if name_value:
self.name_edit2.setText(f"hello,{name_value}")
def close_button_function(self):
self.close()
if __name__ == '__main__':
app = QApplication(sys.argv)
w = MainWindows()
sys.exit(app.exec())
程序运行效果