You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用PyQt实现无圆圈、选中变色的单选按钮列表

实现自定义样式的单选按钮组

直接用原生HTML单选框配合CSS就能搞定,自带单选互斥的逻辑,不用额外写JS,步骤如下:

1. 基础HTML结构

把单选框和标签绑定,用标签作为可视化的按钮载体:

<div class="radio-group">
  <input type="radio" name="option" id="option1" checked>
  <label for="option1">选项一</label>
  
  <input type="radio" name="option" id="option2">
  <label for="option2">选项二</label>
  
  <input type="radio" name="option" id="option3">
  <label for="option3">选项三</label>
</div>

2. CSS样式设置

隐藏原生的单选圆圈,给标签设置按钮样式,再通过选中状态控制背景色:

/* 隐藏原生单选框 */
.radio-group input[type="radio"] {
  display: none;
}

/* 标签的基础样式 */
.radio-group label {
  display: inline-block;
  padding: 8px 16px;
  margin: 0 4px;
  background-color: #f0f0f0;
  border-radius: 4px;
  cursor: pointer;
  transition: background-color 0.2s ease;
}

/* 鼠标悬停效果 */
.radio-group label:hover {
  background-color: #e0e0e0;
}

/* 选中时的样式 */
.radio-group input[type="radio"]:checked + label {
  background-color: #409eff; /* 这里换成你想要的选中背景色 */
  color: #fff;
}

补充说明

  • 核心是利用input[type="radio"]:checked + label这个相邻兄弟选择器,当单选框被选中时,自动给对应的标签切换样式
  • 如果需要纵向排列的按钮组,给标签加display: block;就行
  • 要是不想用原生单选框,也可以用div配合JS实现互斥逻辑,但原生组件自带的单选规则更稳定,不用自己处理选中状态的互斥

内容的提问来源于stack exchange,提问作者Larkov Aleksandr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 00:20:38