У меня есть окно QPlainTextEdit в приложении, которое показывает информацию пользователю. Код приложения огромен, поэтому я просто включу соответствующую часть кода:
class ProgressBox(QPlainTextEdit):
"""Represents the progress information box."""
def __init__(self, win):
"""Message box constructor."""
super().__init__(win)
self.setReadOnly(True)
self.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAsNeeded)
self.setStyleSheet("""
border: 1px inset grey; background-color: white; padding: 10px;
""")
def contextMenuEvent(self, event):
menu = QMenu(self)
menu.setStyleSheet("""
QMenu {
border: 1px inset grey;
background-color: #fff;
color: #000;
padding: 0;
}
QMenu:selected {
background-color: #ddf;
color: #000;
}
""")
clear_action = menu.addAction("Clear")
# copy_all_action = menu.addAction("Copy Selected")
action = menu.exec_(self.mapToGlobal(event.pos()))
if action:
if action == clear_action:
self.clear_text()
def add_text(self, text):
self.setPlainText(self.toPlainText() + text)
self.verticalScrollBar().setValue(
self.verticalScrollBar().maximum()
)
self.repaint()
app.processEvents()
def charCount(self):
return len(self.toPlainText())
def clear_text(self):
self.setPlainText("")
self.repaint()
«Поле прогресса» запускается с помощью (где win = QMainWindow ()):
win.info_box = ProgressBox(self)
И обновляется с помощью:
win.info_box.add_text("Blah, blah.")
Теперь у меня проблема небольшая, но все же раздражающая. Полоса прокрутки для виджета QPlaintextEdit не отображается правильно (у нее нет «дескриптора»). Смотрите изображение:
Мне бы хотелось, чтобы полоса прокрутки в красном поле выглядела так же, как полоса прокрутки на QTableWidget над ней. Кто-нибудь знает, как я могу это сделать, пожалуйста?