pyqt 圆形按钮

color: rgb(137, 221, 255);
background-color: rgb(37, 121, 255);
border-style:none;
border:1px solid #3f3f3f; 

padding:5px;
min-height:20px;
border-radius:15px;

这里写图片描述

<think>我们使用QFluentWidgets库来创建圆形按钮。QFluentWidgets是一个基于PyQt5的Fluent Design风格组件库,它提供了许多现代化的UI组件。 在QFluentWidgets中,我们可以使用`RoundButton`类来创建圆形按钮。这个类位于`qfluentwidgets`模块中。 步骤: 1. 安装QFluentWidgets库(如果尚未安装): ```bash pip install qfluentwidgets ``` 2. 导入必要的模块: ```python import sys from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout from qfluentwidgets import RoundButton # 圆形按钮 ``` 3. 创建一个窗口,并在其中添加圆形按钮。 示例代码: ```python import sys from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout from qfluentwidgets import RoundButton class DemoWindow(QWidget): def __init__(self): super().__init__() self.setWindowTitle('QFluentWidgets 圆形按钮示例') self.setGeometry(300, 300, 300, 200) layout = QVBoxLayout(self) # 创建圆形按钮 self.button1 = RoundButton('按钮1') self.button1.setFixedSize(80, 80) # 设置固定大小(圆形按钮需要宽高相等) self.button1.clicked.connect(lambda: print("按钮1被点击")) self.button2 = RoundButton('按钮2') self.button2.setFixedSize(80, 80) self.button2.clicked.connect(lambda: print("按钮2被点击")) layout.addWidget(self.button1, 0, Qt.AlignCenter) # 居中显示 layout.addWidget(self.button2, 0, Qt.AlignCenter) self.setLayout(layout) if __name__ == '__main__': app = QApplication(sys.argv) window = DemoWindow() window.show() sys.exit(app.exec_()) ``` 说明: - `RoundButton`默认是圆形的,我们通过`setFixedSize`设置一个正方形尺寸(宽高相等)来确保它是圆形。 - 可以设置按钮的文本,也可以设置图标(使用`setIcon`方法)。 - 按钮的样式已经由QFluentWidgets库预设为Fluent Design风格。 注意:如果希望按钮大小可调,可以重写`RoundButton`的`sizeHint`方法,但通常我们固定大小。 另外,QFluentWidgets还提供了其他风格的按钮,如`PrimaryRoundButton`(主色调圆形按钮)等。 示例:使用图标和不同风格的圆形按钮 ```python from PyQt5.QtGui import QIcon from qfluentwidgets import PrimaryRoundButton # 在DemoWindow的布局中添加一个带图标的圆形按钮 self.button3 = PrimaryRoundButton() self.button3.setFixedSize(60, 60) self.button3.setIcon(QIcon('icon.png')) # 设置图标,注意图标路径 self.button3.clicked.connect(lambda: print("带图标的圆形按钮被点击")) layout.addWidget(self.button3, 0, Qt.AlignCenter) ``` 这样,我们就使用QFluentWidgets库轻松创建了圆形按钮。 引用说明:QFluentWidgets库提供了丰富的Fluent Design组件,可以大大简化PyQt5中现代化UI的开发[^1]。 §§相关问题§§ 1. QFluentWidgets 中还有哪些常用的控件? 2. 如何自定义QFluentWidgets中按钮的样式? 3. 如何在PyQt5中实现圆形进度条?</think># 在 PyQt5 中使用 QFluentWidgets 创建圆形按钮 QFluentWidgets 是一个基于 PyQt5 的现代化 UI 组件库,提供了丰富的 Fluent Design 风格控件。要创建圆形按钮,我们可以使用 QFluentWidgets 提供的 `RoundButton` 类,它专门设计用于创建圆形按钮。 ## 完整示例代码 ```python import sys from PyQt5.QtWidgets import QApplication, QVBoxLayout, QWidget from qfluentwidgets import RoundButton, setTheme, Theme class CircularButtonDemo(QWidget): def __init__(self): super().__init__() self.setWindowTitle("QFluentWidgets 圆形按钮示例") self.resize(400, 300) # 设置主题(浅色/深色) setTheme(Theme.DARK) # 可选 Theme.LIGHT 或 Theme.DARK # 创建布局 layout = QVBoxLayout(self) layout.setSpacing(20) layout.setContentsMargins(50, 50, 50, 50) # 创建基本圆形按钮 btn1 = RoundButton("普通按钮", self) btn1.clicked.connect(lambda: print("普通圆形按钮被点击")) layout.addWidget(btn1, alignment=Qt.AlignCenter) # 创建带图标的圆形按钮 btn2 = RoundButton("带图标按钮", self, ":/qfluentwidgets/images/icons/Album.svg") btn2.clicked.connect(lambda: print("带图标按钮被点击")) layout.addWidget(btn2, alignment=Qt.AlignCenter) # 创建主色调圆形按钮 btn3 = RoundButton("主色调按钮", self) btn3.setPrimary() # 设置为主要按钮样式 btn3.clicked.connect(lambda: print("主色调按钮被点击")) layout.addWidget(btn3, alignment=Qt.AlignCenter) # 创建禁用状态的圆形按钮 btn4 = RoundButton("禁用按钮", self) btn4.setEnabled(False) layout.addWidget(btn4, alignment=Qt.AlignCenter) # 创建自定义尺寸的圆形按钮 btn5 = RoundButton("大号按钮", self) btn5.setFixedSize(100, 100) # 设置自定义尺寸 btn5.clicked.connect(lambda: print("大号按钮被点击")) layout.addWidget(btn5, alignment=Qt.AlignCenter) if __name__ == '__main__': app = QApplication(sys.argv) window = CircularButtonDemo() window.show() sys.exit(app.exec_()) ``` ## 关键功能说明 1. **基本圆形按钮**: ```python btn = RoundButton("文本", parent) ``` - 创建带有指定文本的圆形按钮 - 自动适应文本长度 2. **带图标的圆形按钮**: ```python btn = RoundButton("文本", parent, "图标路径") ``` - 第三个参数指定图标文件路径 - QFluentWidgets 内置了一些图标资源 3. **主色调按钮**: ```python btn.setPrimary() ``` - 设置按钮为主色调样式 - 在深色/浅色主题下自动调整颜色 4. **禁用状态**: ```python btn.setEnabled(False) ``` - 禁用按钮并显示禁用状态样式 5. **自定义尺寸**: ```python btn.setFixedSize(width, height) ``` - 设置按钮固定尺寸 - 必须保持宽高相等才能保持圆形 ## 自定义样式 虽然 `RoundButton` 提供了开箱即用的样式,但也可以进一步自定义: ```python # 自定义按钮样式 custom_btn = RoundButton("自定义样式", self) custom_btn.setStyleSheet(""" RoundButton { background-color: #FF5722; color: white; font: bold 14px; } RoundButton:hover { background-color: #FF7043; } RoundButton:pressed { background-color: #E64A19; } """) ``` ## 安装 QFluentWidgets 要使用 QFluentWidgets,首先需要安装它: ```bash pip install PyQt5 pip install PyQt-Fluent-Widgets ``` ## 注意事项 1. QFluentWidgets 的圆形按钮会自动处理悬停、按下等状态效果 2. 按钮尺寸应保持宽高相等才能保持完美的圆形 3. 使用 `setTheme()` 可以全局切换浅色/深色主题 4. 内置图标资源路径前缀为 `:/qfluentwidgets/images/icons/` 通过使用 QFluentWidgets 的 `RoundButton`,您可以轻松创建符合 Fluent Design 风格的圆形按钮,而无需手动处理绘制逻辑或样式细节[^1]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值