#python #pyqt #pyqt5
Вопрос:
Я пытаюсь создать простую консоль с графическим интерфейсом, используя PyQt5. При попытке распечатать текст с помощью QTextBrowser — setText он теряет выравнивание и выглядит плохо. но текст выровнен в моей консоли python
Я использую функцию setText для отображения моего фрейма данных. При изменении параметра обоснования df.to_string () я могу видеть измененное выравнивание в консоли python, но это не отражено в моей консоли Qt.
Код :
import sys
from GUI_4 import Ui_MainWindow
from PyQt5 import QtCore, QtGui, QtWidgets
import New_Read_Map_File
def window():
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QWidget()
label = QtWidgets.QTextBrowser(MainWindow)
label.setStyleSheet('color: blue')
MainWindow.setGeometry(600,150,800,800)
label.setGeometry(10,10,780,780)
GetData()
label.setText(DisplayData)
MainWindow.show()
sys.exit(app.exec_())
def GetData():
global DisplayData
New_Read_Map_File.read_MapFile_main()
DisplayData = (New_Read_Map_File.df.to_string(col_space = 14,justify = "justify"))
print(DisplayData)
window()
Ожидаемое Выравнивание
Наблюдаемый графический интерфейс Qt
Ответ №1:
Проблема вызвана шрифтом, в случае консолей и многих IDE используется моноширинный шрифт.
Например, если вы используете моноширинный шрифт:
import numpy as np
import pandas as pd
from PyQt5 import QtCore, QtGui, QtWidgets
def pandas_to_str():
df = pd.DataFrame({
'A' : 1.,
'B' : pd.Timestamp('20130102'),
'C' : pd.Series(1,index=list(range(4)),dtype='float32'),
'D' : np.array([3] * 4,dtype='int32'),
'E' : pd.Categorical(["test","train","test","train"]),
'F' : 'foo' })
return df.to_string(col_space =14,justify = "justify")
if __name__ == '__main__':
import sys
app = QtWidgets.QApplication(sys.argv)
w = QtWidgets.QTextBrowser()
w.setStyleSheet('color: blue')
w.setFont(QtGui.QFont("Monospace"))
w.setWordWrapMode(QtGui.QTextOption.NoWrap)
w.setText(pandas_to_str())
w.showMaximized()
sys.exit(app.exec_())
Комментарии:
1. Спасибо за ответ и правки eyllanesc, я попробовал изменить шрифт.. Тем не менее, проблема сохраняется.
2. Я попробовал Монопространство, как вы и предлагали. Также использовались параметры выравнивания QtGui. QТексТопция. Теперь извлеките из своего кода. Никакого эффекта не последовало. Затем я попытался использовать Arial. Я могу видеть измененный шрифт.. но выравнивание по-прежнему остается коруптом… Спасибо вам за эту огромную поддержку… 🙂
3. Большое вам спасибо…. как вы уже упоминали, проблема заключалась в том, что шрифт не был установлен. Я адаптировал шрифт по вашей ссылке на github, и он быстро заработал……. Ты потрясающий..!! — Паван
4. не могли бы вы предоставить информацию о том, как установить шрифт, я не вижу ссылки на github