Как изменить видимую часть текста в (коротком) QLineEdit? - PullRequest
0 голосов
/ 24 апреля 2018

В моем PyQt GUI у меня есть несколько относительно коротких (readOnly) QLineEdits, содержащих некоторый текст. Поскольку содержащийся текст длиннее, чем сам виджет, может быть показана только его часть. Виджет QLineEdit обычно показывает последнюю часть (по умолчанию):

enter image description here

Как показано на рисунке, я бы хотел сделать видимой первую часть текста (по умолчанию). Как мне это сделать?

Я добавил некоторый код ниже, чтобы помочь вам быстро настроить тест-кейс. Просто скопируйте и вставьте код в файл *.py, запустите его, и вы должны получить QLineEdit в окне.

import sys
import os
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *


'''================================================================================'''
'''|                           CUSTOM MAIN WINDOW                                 |'''
'''================================================================================'''
class CustomMainWindow(QMainWindow):

    def __init__(self):
        super(CustomMainWindow, self).__init__()

        # -------------------------------- #
        #           Window setup           #
        # -------------------------------- #

        # 1. Define the geometry of the main window
        # ------------------------------------------
        self.setGeometry(100, 100, 800, 200)
        self.setWindowTitle("QLineEdit test")

        # 2. Create frame and layout
        # ---------------------------
        self.__frm = QFrame(self)
        self.__frm.setStyleSheet("QWidget { background-color: #ffffff }")
        self.__lyt = QVBoxLayout()
        self.__lyt.setAlignment(Qt.AlignTop)
        self.__frm.setLayout(self.__lyt)
        self.setCentralWidget(self.__frm)

        # 3. Create QLineEdit
        # -------------------
        self.__myQLineEdit = QLineEdit("This is a very long line")
        self.__myQLineEdit.setFixedWidth(100)
        self.__myQLineEdit.setReadOnly(True)
        self.__lyt.addWidget(self.__myQLineEdit)


        self.show()

'''=== end Class ==='''


if __name__ == '__main__':
    app = QApplication(sys.argv)
    QApplication.setStyle(QStyleFactory.create('Fusion'))
    myGUI = CustomMainWindow()
    sys.exit(app.exec_())

''''''

И последнее, но не менее важное: я хотел бы описать свою систему для полноты:

  • Windows 10, 64-разрядная
  • Python 3,6
  • PyQt5

1 Ответ

0 голосов
/ 24 апреля 2018

Вы можете установить положение курсора для различных событий, например, когда виджет редактирования строки теряет фокус:

class CustomLineEdit(QLineEdit):
    def __init__(self, txt, parent=None):
        super(CustomLineEdit, self).__init__(txt, parent)
        self.setCursorPosition(0)

    def focusOutEvent(self, e):
        self.setCursorPosition(0)

и, возможно, другие события, например, когда изменяется выбор, если хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...