【发布时间】:2019-08-08 16:49:20
【问题描述】:
我想在文本框中很好地格式化一些文本行。我当然想使用字符串格式,但不幸的是出了点问题,我真的不知道在哪里。
这是我的代码,它创建了一个带有文本框和一些“格式化”行的窗口。
import sys
from PyQt5 import QtCore, QtWidgets
from PyQt5.QtWidgets import *
from PyQt5.QtCore import pyqtSlot, QSize, QRect
class PrintWindow(QMainWindow):
def __init__(self):
super().__init__()
self.title='Print something'
self.left=10
self.top=10
self.width=640
self.height=480
self.initUI()
def initUI(self):
self.setWindowTitle(self.title)
self.setGeometry(self.left,self.top,self.width,self.height)
self.statusBar().showMessage('In progress')
# create textbox
self.textbox = QTextEdit(self)
self.textbox.move(50, 210)
self.textbox.resize(540, 200)
self.textbox.setReadOnly(True)
# create textbox done
self.show()
data = []
line1 = 'Some text'
line2 = 50 * '-'
line3 = "{:<10} {:<15} {:<25} {:<25} {:<25}".format('Number:', 'City:', 'Some info:', 'Person:', 'Date:')
line4 = "{:<10} {:<15} {:<25} {:<25} {:<25}".format('1', 'Dublin', 'Yes', 'Gabriella Anderson', 'No date')
line5 = "{:<10} {:<15} {:<25} {:<25} {:<25}".format('2', 'London', 'No', 'Daniel Wozniak', '2019-08-08')
data.append(line1)
data.append(line2)
data.append(line3)
data.append(line4)
data.append(line5)
self.textbox.setText("\n".join(data))
if __name__ == '__main__':
app = QApplication(sys.argv)
window = PrintWindow()
sys.exit(app.exec_())
不幸的是,正如我在上面写的那样,它不起作用,而且窗口看起来也不好看。
更有趣的是,我在普通 Python 终端中尝试了类似的代码。在那里
data = []
line1 = 'Some text'
line2 = 50 * '-'
line3 = "{:<10} {:<15} {:<25} {:<25} {:<25}".format('Number:', 'City:', 'Some info:', 'Person:', 'Date:')
line4 = "{:<10} {:<15} {:<25} {:<25} {:<25}".format('1', 'Dublin', 'Yes', 'Gabriella Anderson', 'No date')
line5 = "{:<10} {:<15} {:<25} {:<25} {:<25}".format('2', 'London', 'No', 'Daniel Wozniak', '2019-08-08')
data.append(line1)
data.append(line2)
data.append(line3)
data.append(line4)
data.append(line5)
for element in data:
print(element)
问题出在哪里?我做错了什么?
【问题讨论】:
-
Qt 字体是等宽字体吗?
-
我不知道他是否诚实。我怎样才能检查它?我正在使用 macOS Mojave、Python 3.7.2 和 Visual Studio Code。