PyQt QTabWidget拖拽移动标签时标签文本字体临时恢复默认的问题解决咨询
PyQt QTabWidget拖拽移动标签时标签文本字体临时恢复默认的问题解决咨询
我在开发PyQt5应用时碰到了一个QTabWidget的诡异问题,想请教大家怎么解决:
一开始我给QTabWidget设置了自定义字体,代码如下,原本一切正常:
tbfont = QFont('Verdana', 14) tab.setFont(tbfont)
但当我开启标签可移动的功能后:
tab.setMovable(True)
就出现了奇怪的现象:拖拽标签的过程中,标签上的文本会临时恢复成默认字体,只有等我把标签拖到新位置松开鼠标后,字体才会重新变回我设置的样式。
我试着给tabBar也单独设置同样的字体,结果完全没用:
tab.tabBar().setFont(tbfont)
目前我只找到一个临时的 workaround:把整个应用的字体设置成和tbfont一样,但这样做的问题是,之后我就没办法单独修改标签的字体了,不符合我的需求。
有没有大佬知道正确的解决方式?下面是我写的最小可复现代码,大家可以直接运行测试:
import sys from PyQt5.QtWidgets import QApplication, QWidget, QGridLayout, QTabWidget from PyQt5.QtGui import QFont class MainWindow(QWidget): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.setWindowTitle('PyQt QTabWidget Move test') self.setGeometry(100, 100, 400, 200) main_layout = QGridLayout(self) self.setLayout(main_layout) # create a tab widget tab = QTabWidget(self) tbfont = QFont('Verdana', 14) tab.setFont(tbfont) # First Tab tab1 = QWidget(self) # Second Tab tab2 = QWidget(self) # add pane to the tab widget tab.addTab(tab1, 'First') tab.addTab(tab2, 'Second') tab.setMovable(True) tab.tabBar().setFont(tbfont) main_layout.addWidget(tab, 0, 0, 2, 1) self.show() if __name__ == '__main__': app = QApplication(sys.argv) window = MainWindow() sys.exit(app.exec())
备注:内容来源于stack exchange,提问作者ACBlue
相关产品推荐
相关产品推荐

