在中PyQt5,我发现带有空格的等长字符串具有不同的最终显示长度:
PyQt5
而期望的输出应该是这样的:
123456789 1 3456789 1 456789 1 56789
我发现这个问题不仅存在于 中QComboBox,也存在于其他多行控件中。固定长度,例如{:15s},也会导致此问题。
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())
错位是由字体引起的,因为字体没有在字母和空格之间提供相同的空间。解决方案是使用“等宽字体”之类的字体:
from PyQt5.QtGui import QFont font = QFont("monospace") self.combo_box.setFont(font)