pyqt5 как оставить пробелы в строке
Виджет QTextEdit, добавляю текст и он съедает все пробелы. У меня строка типа таблицы и между словами нужно оставить все пробелы, а он оставляет только 1.
Ответы (1 шт):
Автор решения: S. Nick
→ Ссылка
Установите QFont("Consolas", ...)
import sys
from PyQt5 import QtGui, QtWidgets, QtCore
from PyQt5.Qt import *
class StackedExample(QWidget): # StackedExample
def __init__(self):
super().__init__()
self.leftlist = QListWidget()
self.do_leftbar()
self.stack1 = QWidget()
self.stack2 = QWidget()
self.stack1UI()
self.stack2UI()
self.Stack = QStackedWidget(self)
self.Stack.addWidget(self.stack1) # возвращает индекс виджета addWidget
self.Stack.addWidget(self.stack2)
hbox = QHBoxLayout(self) # расположение макета
hbox.addWidget(self.leftlist)
hbox.addWidget(self.Stack)
self.setLayout(hbox)
self.leftlist.currentRowChanged.connect(self.display)
self.button.clicked.connect(self.gooo)
self.setGeometry(100, 100, 500, 500)
self.setWindowTitle('StackedWidget demo')
def do_leftbar(self):
# insertItem(позиция в списке, текст)
self.leftlist.insertItem(0, 'Сравнение справочников')
self.leftlist.insertItem(1, 'Редактирование справочников')
# self.leftlist.insertItem(2, 'Будущий функционал')
def gooo(self):
if(self.L1.isChecked()):
text = "12 5 90" # <<<=======<
elif (self.L2.isChecked()):
text = " 3 5 0" # <<<=======<
elif (self.L3.isChecked()):
text = "1 0" # <<<=======<
else:
text = "1234567890" # <<<=======<
self.textEdit.append(text)
def stack1UI(self):
label = QLabel("select")
self.L1 = QRadioButton("L1")
self.L2 = QRadioButton("L2")
self.L3 = QRadioButton("L3")
face = QHBoxLayout()
face.addWidget(label)
face.addWidget(self.L1)
face.addWidget(self.L2)
face.addWidget(self.L3)
self.button = QPushButton("GO")
self.textEdit = QTextEdit()
self.textEdit.setReadOnly(True) # +
font = QFont("Consolas", 14, QFont.Bold) # <<<=======<
self.textEdit.setFont(font) # <<<=======<
layout = QVBoxLayout()
layout.addLayout(face)
layout.addWidget(self.button)
layout.addWidget(self.textEdit)
self.stack1.setLayout(layout)
def stack2UI(self):
layout = QFormLayout()
self.stack2.setLayout(layout)
def display(self,i):
print(i)
self.textEdit.append(f'currentRowChanged -> {i}')
self.Stack.setCurrentIndex(i)
if __name__ == '__main__':
app = QApplication(sys.argv)
app.setFont(QFont("Times", 12, QFont.Bold))
demo = StackedExample()
demo.resize(600, 400)
demo.show()
sys.exit(app.exec_())
Update
Как вариант. Замените пробел на
import sys
from PyQt5 import QtGui, QtWidgets, QtCore
from PyQt5.Qt import *
class StackedExample(QWidget): # StackedExample
def __init__(self):
super().__init__()
self.leftlist = QListWidget()
self.do_leftbar()
self.stack1 = QWidget()
self.stack2 = QWidget()
self.stack1UI()
self.stack2UI()
self.Stack = QStackedWidget(self)
self.Stack.addWidget(self.stack1) # возвращает индекс виджета addWidget
self.Stack.addWidget(self.stack2)
hbox = QHBoxLayout(self) # расположение макета
hbox.addWidget(self.leftlist)
hbox.addWidget(self.Stack)
self.setLayout(hbox)
self.leftlist.currentRowChanged.connect(self.display)
self.button.clicked.connect(self.gooo)
self.setGeometry(100, 100, 500, 500)
self.setWindowTitle('StackedWidget demo')
def do_leftbar(self):
# insertItem(позиция в списке, текст)
self.leftlist.insertItem(0, 'Сравнение справочников')
self.leftlist.insertItem(1, 'Редактирование справочников')
# self.leftlist.insertItem(2, 'Будущий функционал')
def gooo(self):
if(self.L1.isChecked()):
text = "<span style='color:red;'>12 5 90</span>" # <<<=======<
elif (self.L2.isChecked()):
text = "<font color='red'> 3 5 0</font>" # <<<=======<
elif (self.L3.isChecked()):
text = "<font color='blue'>1 0</font>" # <<<=======<
else:
text = "1234567890" # <<<=======<
self.textEdit.append(text)
def stack1UI(self):
label = QLabel("select")
self.L1 = QRadioButton("L1")
self.L2 = QRadioButton("L2")
self.L3 = QRadioButton("L3")
face = QHBoxLayout()
face.addWidget(label)
face.addWidget(self.L1)
face.addWidget(self.L2)
face.addWidget(self.L3)
self.button = QPushButton("GO")
self.textEdit = QTextEdit()
self.textEdit.setReadOnly(True) # +
font = QFont("Consolas", 14, QFont.Bold) # <<<=======<
self.textEdit.setFont(font) # <<<=======<
layout = QVBoxLayout()
layout.addLayout(face)
layout.addWidget(self.button)
layout.addWidget(self.textEdit)
self.stack1.setLayout(layout)
def stack2UI(self):
layout = QFormLayout()
self.stack2.setLayout(layout)
def display(self,i):
print(i)
self.textEdit.append(f'currentRowChanged -> {i}')
self.Stack.setCurrentIndex(i)
if __name__ == '__main__':
app = QApplication(sys.argv)
app.setFont(QFont("Times", 12, QFont.Bold))
demo = StackedExample()
demo.resize(600, 400)
demo.show()
sys.exit(app.exec_())

