Непропадающий фоновый текст QLineEdit
Нужно сделать так, чтобы в QLineEdit
был фоновый текст и поверх него печатался новый.
Использовал placeholderText()
, но текст пропадает.
Хотел создать кастомный LineEdit наследовав от QLineEdit
, но я даже не знаю с чего начать.
from PySide6.QtCore import *
from PySide6.QtGui import *
from PySide6.QtWidgets import *
from sys import argv, exit
class LineEdit(QLineEdit):
def __init__(self, *args, **kwargs):
QLineEdit.__init__(self, *args, **kwargs)
class Window(QMainWindow):
def __init__(self, parent=None):
super(Window, self).__init__(parent)
self.setWindowTitle('LineEdit')
self.setMinimumSize(640, 480)
self.resize(640, 480)
self.centralwidget = QWidget(self)
self.centralwidget.setObjectName(u"centralwidget")
self.verticalLayout = QVBoxLayout(self.centralwidget)
self.verticalLayout.setObjectName(u"verticalLayout")
lineedit = LineEdit('', self)
self.verticalLayout.addWidget(lineedit)
self.setCentralWidget(self.centralwidget)
if __name__ == "__main__":
app = QApplication(argv)
window = Window()
window.show()
exit(app.exec())
Ответы (1 шт):
Автор решения: S. Nick
→ Ссылка
Как вариант, разместить разные QLineEdit
один поверх другого в менеджере компоновки QGridLayout
.
Установите свои импорты и попробуйте:
from sys import argv, exit
'''
from PySide6.QtCore import *
from PySide6.QtGui import *
from PySide6.QtWidgets import *
'''
from PyQt5.Qt import *
class LineEdit(QLineEdit):
def __init__(self, *args, **kwargs):
QLineEdit.__init__(self, *args, **kwargs)
self.setMinimumHeight(60) # +++
class Window(QMainWindow):
def __init__(self, parent=None):
super(Window, self).__init__(parent)
self.setWindowTitle('LineEdit')
self.setMinimumSize(640, 480)
self.resize(640, 480)
self.centralwidget = QWidget(self)
self.centralwidget.setObjectName(u"centralwidget")
self.setCentralWidget(self.centralwidget)
self.layout = QGridLayout(self.centralwidget) # !!! + QGridLayout
self.layout.setObjectName(u"layout")
lineedit_bg = LineEdit('Непропадающий фоновый текст', self) # !!! lineedit_bg
lineedit_bg.setObjectName(u"lineedit_bg")
lineedit_bg.setStyleSheet('''
#lineedit_bg {
background-color: #FF7F50;
color: #FFFF00;
font-size: 40px;
}
''')
lineedit = LineEdit(self, placeholderText='Введите что-нибудь...') # !!! lineedit
lineedit.setObjectName(u"lineedit")
lineedit.setStyleSheet('''
#lineedit {
background-color: transparent;
color: #0000CD;
font-size: 35px;
}
''')
# ---------------------------------------> v v <------------------------- # !!!
self.layout.addWidget(lineedit_bg, 1, 1)
self.layout.addWidget(lineedit, 1, 1)
# ---------------------------------------> ^ ^ <------------------------- # !!!
lineedit.setFocus() # +++
if __name__ == "__main__":
app = QApplication(argv)
window = Window()
window.show()
exit(app.exec())