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.61k stars 541 forks source link

[Bug]: ZhDatePicker显示有Bug #801

Closed pkanyone closed 7 months ago

pkanyone commented 7 months ago

What happened?

继承自MessageBoxBase,在上面布局ZhDatePicker,显示不正常,有英文month\year字样重叠显示。 1710765922993

Operation System

Windows11

Python Version

3.11.8/3.12.2

PyQt/PySide Version

PySide6.6.2/Pyside6.5.4

PyQt/PySide-Fluent-Widgets Version

1.5.3

How to Reproduce?

继承自MessageBoxBase,在上面布局ZhDatePicker,有英文month\year字样年/月重叠显示。

Minimum code

class Customer_Message(MessageBoxBase):
    def __init__(self,parent=None):
        super().__init__(parent)
        vbox=QVBoxLayout()
        self.input_leader=ZhDatePicker(self)
        vbox.addWidget(self.input_leader)
        self.viewLayout.addLayout(vbox)
AlexZhu2001 commented 7 months ago

无法复现,能否给一份更全的测试代码,我的测试代码如下:

from PySide6.QtCore import *
from PySide6.QtGui import *
from PySide6.QtWidgets import *
from qfluentwidgets import *
import time
import random

class Customer_Message(MessageBoxBase):
    def __init__(self, parent=None):
        super().__init__(parent)
        vbox = QVBoxLayout()
        self.input_leader = ZhDatePicker(self)
        vbox.addWidget(self.input_leader)
        self.viewLayout.addLayout(vbox)

class Demo(QWidget):
    def __init__(self):
        super().__init__()
        self.layout = QVBoxLayout(self)
        self.btn = PushButton("Test", self)
        self.resize(800, 600)
        self.layout.addWidget(self.btn)
        self.w = Customer_Message(self)
        self.w.hide()
        self.btn.clicked.connect(lambda:self.w.exec())

if __name__ == "__main__":
    app = QApplication([])
    w = Demo()
    w.show()
    app.exec()

另外,系统语言是英文还是中文

pkanyone commented 7 months ago

系统语言为中文。

from PySide6.QtWidgets import QWidget,QPushButton,QVBoxLayout,QApplication from qfluentwidgets import MessageBoxBase,ZhDatePicker

class My_Message(MessageBoxBase): def init(self,parent=None): super().init(parent) self.dt=ZhDatePicker() self.viewLayout.addWidget(self.dt)

class Test(QWidget): def init(self,parent=None): super().init(parent) btn=QPushButton('测试') btn.clicked.connect(lambda :My_Message(self).exec()) ly=QVBoxLayout() ly.addWidget(btn) self.setLayout(ly) self.setFixedSize(800,600)

if name=='main': app=QApplication([]) w=Test() w.show() app.exec()

pkanyone commented 7 months ago

经比对,缺hide()方法调用,但调用hide()方法后MessageBox显示不是最上层 5

另外,如不用lambda调用MessageBox,用正常的信号-槽方法,hide()方法不起作用。 6

AlexZhu2001 commented 7 months ago

Ok, 我确定了这个是bug,马上会提交一个修复