如何更改(短)QLineEdit中文本的可见部分?

2024-09-28 17:05:17 发布

您现在位置:Python中文网/ 问答频道 /正文

在我的PyQt GUI中,我有几个相对较短(只读)的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型

Tags: 代码from文本importselfinit部件sys
1条回答
网友
1楼 · 发布于 2024-09-28 17:05:17

您可以在各种事件上设置光标位置,例如当“行编辑”小部件失去焦点时:

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)

以及其他可能发生的事件,如选择更改时(如果需要)。你知道吗

相关问题 更多 >