dayu_widgets-button 组件:MPushButton
最编程
2024-10-11 07:03:14
...
一、使用效果
二、使用案例
# 学习笔记 MPushButton控件
import asyncio
from PySide2.QtWidgets import QWidget, QApplication, QVBoxLayout, QHBoxLayout
from dayu_widgets.qt import MIcon
from qasync import QEventLoop
from dayu_widgets import MTheme, MPushButton
class DemoWidget(QWidget):
def __init__(self, parent=None):
super(DemoWidget, self).__init__(parent)
self.setWindowTitle("MLoading控件学习")
# 布局
self.main_layout = QVBoxLayout()
self.setLayout(self.main_layout)
# 添加按钮
self.sub_layout_1 = QHBoxLayout()
self.main_layout.addLayout(self.sub_layout_1)
self.sub_layout_1.addWidget(MPushButton("默认按钮"))
self.sub_layout_1.addWidget(MPushButton("主要按钮").primary())
self.sub_layout_1.addWidget(MPushButton("成功按钮").success())
self.sub_layout_1.addWidget(MPushButton("警告按钮").warning())
self.sub_layout_1.addWidget(MPushButton("危险按钮").danger())
# 添加带图标按钮
self.sub_layout_2 = QHBoxLayout()
self.main_layout.addLayout(self.sub_layout_2)
self.sub_layout_2.addWidget(MPushButton("上传按钮", MIcon("cloud_line.svg")))
self.sub_layout_2.addWidget(MPushButton("文件按钮", MIcon("folder_line.svg", "#ddd")).primary())
self.sub_layout_2.addWidget(MPushButton("提交按钮", MIcon("success_line.svg", "#ddd")).success())
self.sub_layout_2.addWidget(MPushButton("编辑按钮", MIcon("edit_line.svg", "#ddd")).warning())
self.sub_layout_2.addWidget(MPushButton("删除按钮", MIcon("trash_line.svg", "#ddd")).danger())
# 按钮大小
self.sub_layout_3 = QHBoxLayout()
self.main_layout.addLayout(self.sub_layout_3)
self.sub_layout_3.addWidget(MPushButton("大型按钮").large())
self.sub_layout_3.addWidget(MPushButton("中型按钮").medium().primary())
self.sub_layout_3.addWidget(MPushButton("小型按钮").small().primary())
self.sub_layout_3.addWidget(MPushButton("微型按钮").tiny().primary())
# 禁用按钮
self.sub_layout_4 = QHBoxLayout()
self.main_layout.addLayout(self.sub_layout_4)
disabled_button_1 = MPushButton("禁用按钮")
disabled_button_1.setEnabled(False)
self.sub_layout_4.addWidget(disabled_button_1)
if __name__ == '__main__':
# 创建主循环
app = QApplication([])
# 创建异步事件循环
loop = QEventLoop(app)
asyncio.set_event_loop(loop)
# 创建窗口
demo_widget = DemoWidget()
MTheme().apply(demo_widget)
# 显示窗口
demo_widget.show()
loop.run_forever()
三、魔改案例
可以自定义图标和自定义颜色
def custom_color(self, color):
"""
Set the background color of the button using a custom color.
:param color: A string representing the color in hex format (e.g., "#FF00FF").
:return: None
"""
self.setStyleSheet(f"background-color: {color};")
return self
# 学习笔记 MPushButton控件
import asyncio
from PySide2.QtWidgets import QWidget, QApplication, QVBoxLayout, QHBoxLayout
from dayu_widgets.qt import MIcon
from qasync import QEventLoop
from dayu_widgets import MTheme, MPushButton
class DemoWidget(QWidget):
def __init__(self, parent=None):
super(DemoWidget, self).__init__(parent)
self.setWindowTitle("MLoading控件学习")
# 布局
self.main_layout = QVBoxLayout()
self.setLayout(self.main_layout)
# 添加按钮
self.sub_layout_1 = QHBoxLayout()
self.main_layout.addLayout(self.sub_layout_1)
self.sub_layout_1.addWidget(MPushButton("默认按钮"))
self.sub_layout_1.addWidget(MPushButton("主要按钮").primary())
self.sub_layout_1.addWidget(MPushButton("成功按钮").success())
self.sub_layout_1.addWidget(MPushButton("警告按钮").warning())
self.sub_layout_1.addWidget(MPushButton("危险按钮").danger())
# 添加带图标按钮
self.sub_layout_2 = QHBoxLayout()
self.main_layout.addLayout(self.sub_layout_2)
self.sub_layout_2.addWidget(MPushButton("上传按钮", MIcon("cloud_line.svg")))
self.sub_layout_2.addWidget(MPushButton("文件按钮", MIcon("folder_line.svg", "#ddd")).primary())
self.sub_layout_2.addWidget(MPushButton("提交按钮", MIcon("success_line.svg", "#ddd")).success())
self.sub_layout_2.addWidget(MPushButton("编辑按钮", MIcon("edit_line.svg", "#ddd")).warning())
self.sub_layout_2.addWidget(MPushButton("删除按钮", MIcon("trash_line.svg", "#ddd")).danger())
# 按钮大小
self.sub_layout_3 = QHBoxLayout()
self.main_layout.addLayout(self.sub_layout_3)
self.sub_layout_3.addWidget(MPushButton("大型按钮").large())
self.sub_layout_3.addWidget(MPushButton("中型按钮").medium().primary())
self.sub_layout_3.addWidget(MPushButton("小型按钮").small().primary())
self.sub_layout_3.addWidget(MPushButton("微型按钮").tiny().primary())
# 禁用按钮
self.sub_layout_4 = QHBoxLayout()
self.main_layout.addLayout(self.sub_layout_4)
disabled_button_1 = MPushButton("禁用按钮")
disabled_button_1.setEnabled(False)
self.sub_layout_4.addWidget(disabled_button_1)
# 自定义图标、自定义颜色
self.sub_layout_5 = QHBoxLayout()
self.main_layout.addLayout(self.sub_layout_5)
self.sub_layout_5.addWidget(MPushButton("自定义颜色按钮").custom_color("#FFFFFF"))
# 将自定义的图标文件放置在dayu_widgets/static资源文件夹中,然后引用即可。
self.sub_layout_5.addWidget(MPushButton("自定义图标按钮", MIcon("图标.png", "#ddd")))
if __name__ == '__main__':
# 创建主循环
app = QApplication([])
# 创建异步事件循环
loop = QEventLoop(app)
asyncio.set_event_loop(loop)
# 创建窗口
demo_widget = DemoWidget()
MTheme().apply(demo_widget)
# 显示窗口
demo_widget.show()
loop.run_forever()
推荐阅读
-
dayu_widgets-button 组件:MPushButton
-
TDesign 组件库 + vue3 + ts 如何直观地合并内容相同的表格列?(自定义合并表格列)
-
vue2 中的 vue-count-to 组件允许动态显示从某一数字到某一数字的数字(附带 vue3 的用法)。
-
vue-scroll 实现页面组件锚点定位 - 后台
-
cherry-markdown 开源 markdown 组件详细教程 - 研究
-
如何在 vue 中实现组件通信
-
JavaWeb--Vue 组件库元素 (4/6):案例:基本页面布局(基本框架、页面布局、CSS 样式、布局改进、效果展示,附完整代码)
-
vue3:路由保护(全局保护、路由专属保护、组件内保护)
-
如何在 O2OA 中使用 ElementUI 组件设计审批流程工作表
-
HarmonyOS 应用程序开发(组件库)--组件模块化开发、工具包、设计模式(持续更新)--网络下载