小能豆

PyQt 带有空格的等长字符串具有不同的显示长度

py

在中PyQt5,我发现带有空格的等长字符串具有不同的最终显示长度:

1.png

期望的输出应该是这样的:

123456789
1 3456789
1  456789
1   56789

我发现这个问题不仅存在于 中QComboBox,也存在于其他多行控件中。固定长度,例如{:15s},也会导致此问题。

有没有办法显示为所需的输出?

所述问题的一个最小示例:

from PyQt5.QtWidgets import QApplication, QComboBox, QMainWindow
import sys

class Window(QMainWindow):
    def __init__(self): 
        super().__init__() 
        self.combo_box = QComboBox(self)
        a = ["123456789", "1 3456789", "1  456789", "1   56789"]
        self.combo_box.addItems(a)
        self.show()

App = QApplication(sys.argv) 
window = Window()
sys.exit(App.exec())

阅读 19

收藏
2024-12-13

共1个答案

小能豆

错位是由字体引起的,因为字体没有在字母和空格之间提供相同的空间。解决方案是使用“等宽字体”之类的字体:

from PyQt5.QtGui import QFont

font = QFont("monospace")
self.combo_box.setFont(font)
2024-12-13