Git Product home page Git Product logo

pyqt-fluent-widgets's People

Contributors

alexzhu2001 avatar alimostafaradwan avatar cheukfung avatar emrecpp avatar immiprogrammer avatar jaechase avatar junnanlys avatar lingchul avatar linyang-cq avatar rainzee avatar snitro avatar twoosix avatar zhiyiyo avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pyqt-fluent-widgets's Issues

添加导航控件

image
image

能添加这种侧边选项卡和可以与空间高度一致的标题栏吗?

侧边栏位置

image
怎么实现侧边栏像这样、位置不处于标题栏的下方?

自定义图标错位

image
SVG:

<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16" viewBox="0 0 16 16">
    <path d="M10.55 2.532a2.25 2.25 0 0 1 2.9 0l6.75 5.692c.507.428.8 1.057.8 1.72v9.803a1.75 1.75 0 0 1-1.75 1.75h-3.5a1.75 1.75 0 0 1-1.75-1.75v-5.5a.25.25 0 0 0-.25-.25h-3.5a.25.25 0 0 0-.25.25v5.5a1.75 1.75 0 0 1-1.75 1.75h-3.5A1.75 1.75 0 0 1 3 19.747V9.944c0-.663.293-1.292.8-1.72l6.75-5.692Zm1.933 1.147a.75.75 0 0 0-.966 0L4.767 9.37a.75.75 0 0 0-.267.573v9.803c0 .138.112.25.25.25h3.5a.25.25 0 0 0 .25-.25v-5.5c0-.967.784-1.75 1.75-1.75h3.5c.966 0 1.75.783 1.75 1.75v5.5c0 .138.112.25.25.25h3.5a.25.25 0 0 0 .25-.25V9.944a.75.75 0 0 0-.267-.573l-6.75-5.692Z" fill="#ffffff" />
</svg>
<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16" viewBox="0 0 16 16">
    <path 
        d="M6.049 7.984a.75.75 0 0 1 .967-.435L12 9.439l4.984-1.89a.75.75 0 1 1 .532 1.402L12.75 10.76v5.491a.75.75 0 0 1-1.5 0v-5.49L6.484 8.95a.75.75 0 0 1-.435-.967Z"
        fill="#DDE6E8" />
    <path
        d="M10.591 2.512a3.75 3.75 0 0 1 2.818 0l7.498 3.04A1.75 1.75 0 0 1 22 7.174v9.652a1.75 1.75 0 0 1-1.093 1.622l-7.498 3.04a3.75 3.75 0 0 1-2.818 0l-7.498-3.04A1.75 1.75 0 0 1 2 16.826V7.175a1.75 1.75 0 0 1 1.093-1.622l7.498-3.04Zm2.254 1.39a2.25 2.25 0 0 0-1.69 0l-7.499 3.04a.25.25 0 0 0-.156.232v9.652a.25.25 0 0 0 .156.232l7.499 3.04a2.25 2.25 0 0 0 1.69 0l7.499-3.04a.25.25 0 0 0 .156-.232V7.175a.25.25 0 0 0-.156-.232l-7.499-3.04Z"
        fill="#DDE6E8" />
</svg>

PyQt6 demo.py bug

环境

windows11, pyqt6= 6.4.2

报错 1

File ".\PyQt-Fluent-Widgets-PyQt6\examples\gallery\app\components\avatar_widget.py", line 38, in paintEvent    painter.setPen(Qt.white if isDarkTheme() else Qt.black)
AttributeError: type object 'Qt' has no attribute 'black'

修复 1

painter.setPen(Qt.white if isDarkTheme() else Qt.black)
修改为 painter.setPen(Qt.GlobalColor.white if isDarkTheme() else Qt.GlobalColor.black)

报错 2

File ".\PyQt-Fluent-Widgets-PyQt6\examples\gallery\app\components\avatar_widget.py", line 42, in paintEvent
    painter.drawText(QRect(44, 0, 255, 36), Qt.AlignVCenter, 'zhiyiYo')
AttributeError: type object 'Qt' has no attribute 'AlignVCenter'

修复 2

painter.drawText(QRect(44, 0, 255, 36), Qt.AlignVCenter, 'zhiyiYo')
修改为 painter.drawText(QRect(44, 0, 255, 36), Qt.AlignmentFlag.AlignVCenter, 'zhiyiYo')

关于qt-designer中使用组件的问题

@Ephemeralwanning
可以在qtdesigner用的,比如lineEdit,你在qtdesigner正常添加LineEdit控件,然后右键,把它提升为 LineEdit (作者写的组建名),头文件就写 qfluentwidgets .这样你的ui文件生成py文件的时候,会自动import这个组件

尝试以上方法结果报错
报错信息:

Traceback (most recent call last):
  File "d:/apkTS/code/github/test/demo.py", line 435, in <module>
    w = Window()
  File "d:/apkTS/code/github/test/demo.py", line 312, in __init__
    self.thumbInterface = MainWindow()
  File "d:/apkTS/code/github/test/demo.py", line 69, in __init__
    self.setupUi(self)
  File "d:\apkTS\code\github\test\Mai_UI\thumbs.py", line 153, in setupUi
    self.lineEdit_3 = LineEdit(self.groupBox_2)
  File "d:\apkTS\code\github\test\qfluentwidgets\components\widgets\line_edit.py", line 14, in __init__
    super().__init__(contents, parent)
TypeError: arguments did not match any overloaded call:
  QLineEdit(parent: QWidget = None): too many arguments
  QLineEdit(str, parent: QWidget = None): argument 1 has unexpected type 'QGroupBox'         

combobox下拉选项宽度不一致

当combobox本身有最小宽度时,下拉选项宽度不一致,仍为最小宽度,并且combobox文字应该需要左对齐,另外下拉选项的圆角winui3的是8px
image

navigation头像组件的建议

demo里面的AvatarWidget的构造函数建议加个文字和图像的参数,改成如果没有传入头像,就把传入的字符串首字画到头像框里面,比如这样
image

关于Acrylic实现

基本都使用Qml,对PyQt很不了解,所以求教

  1. Acrylic控件如何获取自己的下方像素以进行高斯模糊?在Qml中由于渲染方式的原因,着色器源截取应该是在 source-over 混合之前,我在尝试实现时用了繁琐的层和同步才能部分解决问题,依然实现不了任意混合和多层混合
  2. 一般的Acrylic模拟中使用四层,底层高斯模糊背景,一层颜色以 Color 混合模式和背景混合预处理,一层以 Luminosity 预处理,一层噪声图像,最终以 source-over 叠加,AcrylicLabel中可以在哪里找到一些示例实现?同上原因,我不得不把高斯模糊和两种混合预处理的着色器写在同一个片段着色器中,增加了耦合而且使得维护有一些障碍。
  3. 如何知道颜色定义?通过测出来的还是说源码读出来的

图片是我尝试搓的Acrylic (纯Qml)
image

希望添加导航控件

目前我的做法是用listwidget配合stackedwidget,首先在qlistwidget设置好图标和文字,然后给定一个宽度,比如200px,然后切换的时候,把这个宽度设置为50px,就有类似缩回去的动画;这时候宽度只够显示图标,把滚动条隐藏,就有视频中的效果,但是这个做法比较奇葩,希望作者有更好的实现方法。

2.mp4

PYQT5萌新,不懂就问qwq

给窗口设置背景的时候遇到了这种情况
image
这样实现的
self.homeInterface.setObjectName("home") self.homeInterface.setStyleSheet(#home{border-image:url(resource/bg/1.png);}")
如何让侧边选项卡也加上背景图片?怎样在侧边选项卡中使用acrylic_label?

是否可以提供组件的快速转换

假设一个场景,我现在想要把一个老项目中的button全部转换成 qfluentwidgets中的 PushButton,请问我需要怎么做?其他类型控件也同理。看了一下代码实现,好像暂时没有提供组件快速转换的功能,能否提供一个快速转换的方式,让开发者可以用最小的成本进行UI主题的转换呢?

QML support.

Hello. Thanks for this project.

Is there a way to use it for QML?
I would like to write fluent style ui but I'm using QML not Qt widgets.
Thanks.

有多级子菜单时,RoundMenu无法正常关闭所有菜单

Describe the bug
有多级子菜单时,RoundMenu点击最后一一级的菜单的action时,无法正常关闭所有菜单

Environment

  • OS: Windows11
  • DPI scaling: 100%
  • Python: 3.9.0
  • PyQt: 5.15.2
  • PyQt-Fluent-Widgets: 0.2.8

To Reproduce
Steps to reproduce the behavior(you can use gif to demonstrate the problem):

  1. 创建三级菜单
  2. 点击三级菜单的QAction

Code
非复现代码,我在修改了RounMenu的_closeParentMenu为递归close后恢复正常

    def _closeParentMenu(self):
        menu = self
        while menu.parentMenu:
            parent = menu.parentMenu
            menu.close()
            menu = parent
        menu.close()

Expected behavior
正常关闭所有菜单

Screenshots
bug

圆角窗体问题

您好。无意中看到您这个库。使用了一下。在 Windows 10 上无边框使用系统的 DWM 阴影。如果窗体想要开启圆角使用 QSS 。则会出现一个白色的一层窗体。如果使用 Qt 的 API 设置为透明背景则 DWM 阴影消失。这二者互斥。有什么解决方法么?

Tooltip控件的一些问题

提示内容稍多点就可以发现问题:
修改了下demo的代码,加了两个按钮,并且增加了提示内容的长度。
按钮1,无法很好的躲避屏幕
按钮2,不停闪烁
按钮3和4,来回切换时会发现 enterEvent 会被触发两次,第一次size是乱的,第二次才是正确的。

    def __init__(self):
        super().__init__()
        self.hBox = QHBoxLayout(self)
        self.button1 = QPushButton('キラキ\nラ', self)
        self.button2 = QPushButton('食べた\n愛', self)
        self.button3 = QPushButton('asd\nfasdf', self)
        self.button4 = QPushButton('asd\nfasdf', self)
        self._toolTip = ToolTip(parent=self)
        # self._toolTip.setDarkTheme(True)

        self.button1.setToolTip('aiko - キラキラ ✨'*90)
        self.button2.setToolTip('aiko - 食べた愛 🥰\n'*90)
        self.button3.setToolTip('aiko - キラキラ ✨'*10)
        self.button4.setToolTip('aiko - 食べた愛 🥰\n'*10)
        self.button1.setToolTipDuration(1000)
        self.button2.setToolTipDuration(5000)
        self.button3.setToolTipDuration(1000)
        self.button4.setToolTipDuration(5000)

        self.button1.installEventFilter(self)
        self.button2.installEventFilter(self)
        self.button3.installEventFilter(self)
        self.button4.installEventFilter(self)

        self.hBox.setContentsMargins(30, 30, 30, 30)
        self.hBox.setSpacing(20)
        self.hBox.addWidget(self.button1)
        self.hBox.addWidget(self.button2)
        self.hBox.addWidget(self.button3)
        self.hBox.addWidget(self.button4)

        self.resize(600, 300)
        self._toolTip.hide()

        self.setStyleSheet(self.DEMO_STYLE_SHEET)

切换主题有bug

从某个版本开始,切换 浅色到自动主题的时候会出错

有没有计划添加日历控件

我又来了。。
这个库现在算是比较完善了,如果有个日历控件就更好了,自带的实在是太难看了,也不好美化,写了半天qss还是好丑。。。
估计只能像combox那样直接自己画一个了

examples-settings更改选项框内容后崩溃

Describe the bug
更改选项框内容后程序崩溃

Environment

  • OS: Windows11 Insider Preview 25295.1000
  • DPI scaling: 100%
  • Python: Python 3.11.0 64Bit
  • PyQt: 5.15.9
  • PyQt-Fluent-Widgets: 0.2.6

To Reproduce
录制_2023_03_04_12_51_14_722
录制_2023_03_04_12_51_50_590
1.更改任何一个选项框的内容
2.见错误
3.程序崩溃
4.重启程序后选项框的选项是生效的(比如变成深色模式)

Code

Traceback (most recent call last):
  File "D:\WinDownload\examples\settings\setting_interface.py", line 260, in __showRestartTooltip
    ToastToolTip.warn(
    ^^^^^^^^^^^^^^^^^
AttributeError: type object 'ToastToolTip' has no attribute 'warn'

请修复此BUG

mac下lineEdit有额外的focus框

大佬牛逼,button lineedit等各个组件都添加了,早知道我就不对着winui3的设计稿自己写qss了。。。
这个bug我好早前就遇到过了,mac下有个特性,会给编辑框强行加个focus框,需要添加
QLineEdit.setAttribute(QtCore.Qt.WA_MacShowFocusRect, 0)
才可以消除。你还在写其他组件,我就不提pr了

iShot_2023-03-25_22 10 16

iShot_2023-03-25_22 10 50

建议Dialog加个最小宽度

如果文字提示太短,会导致消息框太小,很难看,建议加个最小宽度比如25%父窗口大小,看起来顺眼很多
image
image

Mac下MessageBox对话框窗口的取消和确定按钮间距为0

Describe the bug
Mac下MessageBox对话框窗口的取消和确定按钮间距为0
Environment

  • OS: MAC
  • Python: 3.9.6
  • PyQt: 5.15.2
  • PyQt-Fluent-Widgets: 0.3.1

使用messagebox,弹出的窗口取消按钮和确定按钮中间的间距为0
image

如果是使用messageDialog,则正常
image

导航栏自定义图标时出错

代码

        self.navigationInterface.addItem(
            routeKey=self.promptInterface.objectName(),
            icon=QPixmap(icon_dir + "prompt.png"),
            text="Prompt",
            onClick=lambda: self.switchTo(self.promptInterface),
        )

报错信息

File "***\lib\site-packages\qfluentwidgets\common\icon.py", line 89, in drawIcon
    painter.drawPixmap(rect, image)
TypeError: arguments did not match any overloaded call:
  drawPixmap(self, QRectF, QPixmap, QRectF): not enough arguments
  drawPixmap(self, QRect, QPixmap, QRect): argument 1 has unexpected type 'QRectF'
  drawPixmap(self, Union[QPointF, QPoint], QPixmap): argument 1 has unexpected type 'QRectF'
  drawPixmap(self, QPoint, QPixmap): argument 1 has unexpected type 'QRectF'
  drawPixmap(self, QRect, QPixmap): argument 1 has unexpected type 'QRectF'
  drawPixmap(self, int, int, QPixmap): argument 1 has unexpected type 'QRectF'
  drawPixmap(self, int, int, int, int, QPixmap): argument 1 has unexpected type 'QRectF'
  drawPixmap(self, int, int, int, int, QPixmap, int, int, int, int): argument 1 has unexpected type 'QRectF'
  drawPixmap(self, int, int, QPixmap, int, int, int, int): argument 1 has unexpected type 'QRectF'
  drawPixmap(self, Union[QPointF, QPoint], QPixmap, QRectF): argument 1 has unexpected type 'QRectF'
  drawPixmap(self, QPoint, QPixmap, QRect): argument 1 has unexpected type 'QRectF'

运行demo报错

Describe the bug
Traceback (most recent call last):
File "D:\Source\PyQt-Fluent-Widgets-master\examples\gallery\demo.py", line 9, in
from app.view.main_window import MainWindow
File "D:\Source\PyQt-Fluent-Widgets-master\examples\gallery\app\view\main_window.py", line 13, in
from .gallery_interface import GalleryInterface
File "D:\Source\PyQt-Fluent-Widgets-master\examples\gallery\app\view\gallery_interface.py", line 6, in
from qfluentwidgets import (ScrollArea, PushButton, ToolButton, FluentIcon,
ImportError: cannot import name 'PushButton' from 'qfluentwidgets' (C:\Users\YinBuLiao\AppData\Roaming\Python\Python311\site-packages\qfluentwidgets_init_.py)

Environment

  • OS:win11
  • DPI scaling: 100%
  • Python: 3.11
  • PyQt: 5
  • PyQt-Fluent-Widgets: 0.45

To Reproduce
cd examples/gallery
python demo.py

demo运行失败

win11 python3.8.5 32位

为什么我安装后全部demo都无法运行呢,基本都是下图错误

QQ截图20230130205810

滑动条添加工具提示

你好 最近看了这个项目 感觉非常不错 就是能否添加 在鼠标按下 hollow_handle_slider 中的
截屏2022-08-12 02 06 46
时 在上方显示百分比 (类似于 tool_tip

Mac下Dialog消息提示框未禁用窗口调整大小

Describe the bug
Mac下Dialog消息提示框未禁用窗口调整大小
Environment

  • OS: MAC
  • Python: 3.9.6
  • PyQt: 5.15.2
  • PyQt-Fluent-Widgets: 0.3.1

使用带标题栏的消息对话框,弹出后可以随意调整窗口尺寸大小,看代码有self.setResizeEnabled(False),但是不生效
2023-03-17 09 04 18

多显示屏下,ComboBox与RoundMenu组件显示位置问题

Describe the bug
多显示屏环境下运行menu\demo.py与combo_box\demo.py运行异常。
副屏显示主窗体,会在主屏幕显示RoundMenu与ComboBox。
具体效果见截图。

Environment

  • OS: Windows10;
  • DPI scaling: 125%;
  • Python: Python 3.9.16-64bit
  • PyQt: v6.4.1
  • PyQt-Fluent-Widgets: v0.1.7
  • 任务栏设置:副屏任务栏在下面,主屏任务栏在右边。

To Reproduce
在副屏运行demo,右键主窗体或点击主窗体中的comboBox即可触发。

Expected behavior
多选栏和上下文菜单在争取位置显示。

Screenshots
Monitor Identification
ComboBox
RoundMenu

如何拓展 FluentIcon 来添加自己的图标

FluentIcon是继承的Enum,没办法继续扩展,只能按FluentIcon的结构重写一个我自己的MyIcon类,但是在icon.py的drawIcon方法里面, 只有instance是FluentIcon类才会执行icon.rende,这样我的MyIcon类就没办法执行了,只能传入QIcon或者icon路径,这样我就不能集中维护我自己的图标了,drawicon方法能否优化一下,还是说有其他方法可以实现。感谢

在重构后,运行,出现找不到依赖的报错

在此之前我以pip install -r requirements.txt安装了依赖库,在试图运行tool_tip时出现问题

不论我是cd到tool_tip目录下还是项目根目录都没用

Traceback (most recent call last):
  File "/home/xian/文档/PyQt-Fluent-Widgets/examples/tool_tip/demo.py", line 6, in <module>
    from qfluentwidgets import ToolTip
ModuleNotFoundError: No module named 'qfluentwidgets'

[Install Error] cannot import name 'InfoBar' from 'qfluentwidgets'

Describe the bug
A clear and concise description of what the bug is.

Environment

  • OS: [Windows10]

  • Python: [e.g. 3.10.9 64-bit]

    File "D:\Dev\PyQt-Fluent-Widgets\examples\gallery\demo.py", line 9, in
    from app.view.main_window import MainWindow
    File "D:\Dev\PyQt-Fluent-Widgets\examples\gallery\app\view\main_window.py", line 21, in
    from .status_info_interface import StatusInfoInterface
    File "D:\Dev\PyQt-Fluent-Widgets\examples\gallery\app\view\status_info_interface.py", line 5, in
    from qfluentwidgets import (StateToolTip, ToolTipFilter, PushButton, PixmapLabel,
    ImportError: cannot import name 'InfoBar' from 'qfluentwidgets' (C:\Users\GRBJ200045.conda\envs\ti-build\lib\site-packages\qfluentwidgets_init_.py)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.