zhiyiYo / PyQt-Fluent-Widgets

A fluent design widgets library based on C++ Qt/PyQt/PySide. Make Qt Great Again.
https://qfluentwidgets.com
GNU General Public License v3.0
5.71k stars 554 forks source link

添加 TabWidget #412

Closed zhiyiYo closed 1 year ago

zhiyiYo commented 1 year ago

计划在下个版本中添加 TabWidget,样式参考: image

immiProgrammer commented 1 year ago

thanks

qianye216 commented 1 year ago

谢谢大佬支持tab组件,刚安装了PyQt5分支最新的代码,运行demo程序,有以下几个小问题,不知道是不是已知的: 1、新建tab后,两个tab有一定重叠,就算更改窗口宽度也会重叠 2、新建tab后右侧多了上下可以滚动的滚动条 3、点击关闭最后一个tab后程序崩溃 image

qianye216 commented 1 year ago

谢谢大佬支持tab组件,刚安装了PyQt5分支最新的代码,运行demo程序,有以下几个小问题,不知道是不是已知的: 1、新建tab后,两个tab有一定重叠,就算更改窗口宽度也会重叠 2、新建tab后右侧多了上下可以滚动的滚动条 3、点击关闭最后一个tab后程序崩溃 image

另外补充几点不知道能否优化: 4、当新建多个tab后,窗口宽度不足时,最右侧那个tab无法完整看到,必须水平滑动才能看到,如果新建tab后能自动完整显示新建的tab就更好了 5、多个tab之间目前无法更换位置,如果能支持长按tab拖曳移动更换位置就更好了

zhiyiYo commented 1 year ago

这个组件还没写完,之后还会完善

qianye216 commented 1 year ago

这个组件还没写完,之后还会完善

好的,大佬加油,期待成品👌🏻

keymou commented 1 year ago

nice

JingyuanBai commented 1 year ago

求问各位大佬,作者的源码demo我下载了,请问我怎么能实现在切换不同的tabBar下面显示不同的navigationBar和stackWidget?也就是随着tabBar的切换下面的内容也随着切换,谢谢!

zhiyiYo commented 1 year ago

@JingyuanBai 看下最新的 demo

zhiyiYo commented 1 year ago

@qianye216 拖拽功能在 Mac 上会有问题吗

qianye216 commented 1 year ago

@qianye216 拖拽功能在 Mac 上会有问题吗

标签页拖曳移动功能在MAC下使用正常

zhiyiYo commented 1 year ago

还会有重叠吗?我在 Windows 下面复现不了这个问题

qianye216 commented 1 year ago

还会有重叠吗?我在 Windows 下面复现不了这个问题

还是有重叠 image

zhiyiYo commented 1 year ago

如果把 TabBar 放在别的组件的水平布局里面会重叠吗

qianye216 commented 1 year ago

如果把 TabBar 放在别的组件的水平布局里面会重叠吗

也会重叠,好像和之前对话框确定和取消按钮间距在MAC下有问题比较类似 我添加了self.setAttribute(Qt.WA_LayoutUsesWidgetRect)属性后就正常了 image image

zhiyiYo commented 1 year ago

是在 TabItem 上面加吗

qianye216 commented 1 year ago

是在 TabItem 上面加吗

是的

zhiyiYo commented 1 year ago

okk

zhiyiYo commented 1 year ago

目前实现的效果如下: image image

zhiyiYo commented 1 year ago

@qianye216 Mac 上开启 Mica 特效会有 bug 吗

qianye216 commented 1 year ago

@qianye216 Mac 上开启 Mica 特效会有 bug 吗

会崩溃,日志如下:

python3 demo.py
qt.qpa.fonts: Populating font family aliases took 862 ms. Replace uses of missing font family "Segoe UI" with one that exists to avoid this cost.
Traceback (most recent call last):
  File "/Users/**/Downloads/PyQt-Fluent-Widgets-PyQt5/examples/tab_view/demo.py", line 209, in <module>
    w = Window()
  File "/Users/**/Downloads/PyQt-Fluent-Widgets-PyQt5/examples/tab_view/demo.py", line 116, in __init__
    self.initWindow()
  File "/Users/**/Downloads/PyQt-Fluent-Widgets-PyQt5/examples/tab_view/demo.py", line 155, in initWindow
    self.useMicaEffect()
  File "/Users/**/Downloads/PyQt-Fluent-Widgets-PyQt5/examples/tab_view/demo.py", line 194, in useMicaEffect
    self.windowEffect.setMicaEffect(self.winId(), isDarkTheme())
TypeError: setMicaEffect() takes 2 positional arguments but 3 were given
zhiyiYo commented 1 year ago

把isdarktheme参数剔除掉试试

qianye216 commented 1 year ago

把isdarktheme参数剔除掉试试

删除后提示这个:

python3 demo.py
qt.qpa.fonts: Populating font family aliases took 629 ms. Replace uses of missing font family "Segoe UI" with one that exists to avoid this cost.
Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/qfluentwidgets/window/fluent_window.py", line 52, in paintEvent
    super().paintEvent(e)
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/qframelesswindow/mac/__init__.py", line 56, in paintEvent
    self.__hideSystemTitleBar()
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/qframelesswindow/mac/__init__.py", line 76, in __hideSystemTitleBar
    self.__nsWindow.standardWindowButton_(Cocoa.NSWindowCloseButton).setHidden_(True)
AttributeError: 'NoneType' object has no attribute 'setHidden_'
zsh: abort      python3 demo.py
zhiyiYo commented 1 year ago

那把那行代码注释掉呢

qianye216 commented 1 year ago

那把那行代码注释掉呢

不行,不启用所有效果才能运行

self.useMicaEffect()

zhiyiYo commented 1 year ago

启用亚克力效果也会报错吗

qianye216 commented 1 year ago

启用亚克力效果也会报错吗

是的,报错和上面的一样

zhiyiYo commented 1 year ago

看来只能在 Win11 开了

zhiyiYo commented 1 year ago

@qianye216 现在运行 gallery 的 demo 会报错吗?

JingyuanBai commented 1 year ago

@qianye216 现在运行 gallery 的 demo 会报错吗?

我的会闪退,win10

zhiyiYo commented 1 year ago

@JingyuanBai 有报错信息吗

qianye216 commented 1 year ago

@qianye216 现在运行 gallery 的 demo 会报错吗?

正常运行,没有报错

zhiyiYo commented 1 year ago

正常运行,没有报错

感谢

JingyuanBai commented 1 year ago

@JingyuanBai 有报错信息吗

没有报错信息,直接退出去了

zhiyiYo commented 1 year ago

@JingyuanBai 你用的是 python 3.11 吗

JingyuanBai commented 1 year ago

@JingyuanBai 你用的是 python 3.11 吗

3.8.8

zhiyiYo commented 1 year ago

FluentWindowBaseself.setMicaEffectEnabled(True) 注释掉试试?

JingyuanBai commented 1 year ago

FluentWindowBaseself.setMicaEffectEnabled(True) 注释掉试试?

卡在初始化界面很长时间,鼠标转圈,然后退掉,无报错信息

zhiyiYo commented 1 year ago

之前的代码会这样吗?Win10 应该不会执行设置 Mica 特效的代码

JingyuanBai commented 1 year ago

之前的代码会这样吗?Win10 应该不会执行设置 Mica 特效的代码

之前不会,我过去一直用的是更新系统拖盘之前的代码

zhiyiYo commented 1 year ago

@JingyuanBai 切换到这个 Commit 试试 添加滑动条动画 (#422)

zhiyiYo commented 1 year ago

估计是你导入的包是 pip install 的,而不是源代码里面的模块

zhiyiYo commented 1 year ago

如果想要使用最新的源代码来运行 demo,需要把 gallery 文件夹下的文件拖到项目根目录下 image

JingyuanBai commented 1 year ago

如果想要使用最新的源代码来运行 demo,需要把 gallery 文件夹下的文件拖到项目根目录下

我运行tab_view下的demo是没问题的

zhiyiYo commented 1 year ago

可以录个屏演示一下吗?请确保目前是最新的 Commit

JingyuanBai commented 1 year ago

可以录个屏演示一下吗?

https://github.com/zhiyiYo/PyQt-Fluent-Widgets/assets/102663151/6e9203aa-d810-4f86-ab68-e8a2b1dbb1bd

zhiyiYo commented 1 year ago

@JingyuanBai 现在还能运行 tab_view 的 demo 吗?以及 window ~ window3

zhiyiYo commented 1 year ago

@JingyuanBai 打包的 exe 会闪退吗 https://wwff.lanzoum.com/ijvOS14wkyeb

JingyuanBai commented 1 year ago

@JingyuanBai 现在还能运行 tab_view 的 demo 吗?以及 window ~ window3

可以运行

JingyuanBai commented 1 year ago

@JingyuanBai 打包的 exe 会闪退吗 https://wwff.lanzoum.com/ijvOS14wkyeb

不会闪退

zhiyiYo commented 1 year ago

怀疑是你环境问题,试试虚拟环境