Yun Tae Hwang
Yun Tae Hwang

Reputation: 1471

pyqt5 / qtdesigner textbox default label

I am trying to create a GUI for my Python program. One of the tools that I need is a text input box.

Now, I want a text label for this box saying "Please insert texts". Is there a function to add a label that shows inside the input textbox as default and disappear when user click the box to type?

I don't mind to use qt designer or pyqt5 coding.

Upvotes: 1

Views: 4569

Answers (2)

Gabriel
Gabriel

Reputation: 11

I am beginner like you. But I recommend you use Qt Designer. It's easier, faster for you draw your app. I am using pyside2 project and recommend you read documentation each widgets you want to use in PySide2 project and Qt Project.

enter image description here

Try code below:

import sys
from PySide2.QtWidgets import QApplication
from PySide2.QtWidgets import QDialog
from PySide2.QtWidgets import QTextEdit
from PySide2.QtWidgets import QVBoxLayout
from PySide2.QtCore import Qt


class MainDialog(QDialog):
    def __init__(self, parent=None):
        super(MainDialog, self).__init__(parent)

        # Create Widget TextEdit
        self.text = QTextEdit()

        # I think that you wanna this function in your program
        # https://doc.qt.io/qtforpython/PySide2/QtWidgets/QLineEdit.html?highlight=qlineedit#PySide2.QtWidgets.PySide2.QtWidgets.QLineEdit.setPlaceholderText
        # http://doc.qt.io/qt-5/qlineedit.html#placeholderText-prop
        self.text.setPlaceholderText('''Yes! this is exactly what I want!
        Thank you, what if you have a big text box (more than 10 lines) and
        you want to scale up the place holder and align it in center?? ''')

        # https://doc.qt.io/qtforpython/PySide2/QtWidgets/QLineEdit.html?highlight=qlineedit#PySide2.QtWidgets.PySide2.QtWidgets.QLineEdit.setAlignment
        # http://doc.qt.io/qt-5/qlineedit.html#alignment-prop
        self.text.setAlignment(Qt.AlignCenter)

        # Layout
        layout = QVBoxLayout()
        layout.addWidget(self.text)
        self.setLayout(layout)


def main():

    app = QApplication()
    mainDialog = MainDialog()
    mainDialog.show()
    sys.exit(app.exec_())


if __name__ == '__main__':
    main()

Upvotes: 1

S. Nick
S. Nick

Reputation: 13681

placeholderText : QString This property holds the line edit's placeholder text

import sys
from PyQt5.QtWidgets import QLineEdit, QVBoxLayout, QApplication, QWidget

class Test(QWidget):
    def __init__(self):
        super().__init__()

        self.lineEdit = QLineEdit(placeholderText="Please insert texts.")  # <---

        vbox = QVBoxLayout(self)
        vbox.addWidget(self.lineEdit)

if __name__ == '__main__':
    app  = QApplication(sys.argv)
    w = Test()
    w.show()
    sys.exit(app.exec_())

enter image description here

Upvotes: 3

Related Questions