Klar QLineEdit Ereignis klicken

Ich bin sehr neu in Python und dem Qt Designer. Mit diesem code möchte ich dem Benutzer die Eingabe von text in das QLineEdit-widget, drücken Sie die Kopieren! Schaltfläche und sehen Sie den eingegebenen text ersetzen Sie die "N/A" - label. Meine Frage ist: nach diesem Verfahren, wie lösche ich den text eingegeben in die QLineEdit-widget mit einem einfachen Mausklick?

Aus, was ich lese (diese, diese und diese) wie es scheint, ich brauche zu implementieren focusInEvent() in eine neue Klasse, die sich QLineEdit. Mein problem ist, dass der code für meine GUI importiert wurde vom Qt-Designer mit pyuic5 und die oben angeführten Beispiele scheinen nicht zu nehmen diese in Betracht.

Hier ist mein code:

from PyQt5.QtWidgets import *
import sys

import QLineEdit_test


class MainWindow(QMainWindow, QLineEdit_test.Ui_QLineEdit_test):

    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        self.setupUi(self)

        self.copy_button.clicked.connect(self.copy_and_print)

    def copy_and_print(self):

        self.label.setText(self.lineEdit.text())


def main():

    app = QApplication(sys.argv)
    form = MainWindow()
    form.show()
    app.exec_()

if __name__ == "__main__":
    main()

Hier ist meine konvertierten .ui-Datei:

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_QLineEdit_test(object):
    def setupUi(self, QLineEdit_test):
        QLineEdit_test.setObjectName("QLineEdit_test")
        QLineEdit_test.resize(300, 200)
        QLineEdit_test.setMaximumSize(QtCore.QSize(300, 200))
        self.centralwidget = QtWidgets.QWidget(QLineEdit_test)
        self.centralwidget.setObjectName("centralwidget")
        self.gridLayout_2 = QtWidgets.QGridLayout(self.centralwidget)
        self.gridLayout_2.setObjectName("gridLayout_2")
        self.gridLayout = QtWidgets.QGridLayout()
        self.gridLayout.setObjectName("gridLayout")
        self.lineEdit = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit.setMaximumSize(QtCore.QSize(120, 16777215))
        self.lineEdit.setObjectName("lineEdit")
        self.gridLayout.addWidget(self.lineEdit, 0, 0, 1, 1)
        self.copy_button = QtWidgets.QPushButton(self.centralwidget)
        self.copy_button.setObjectName("copy_button")
        self.gridLayout.addWidget(self.copy_button, 1, 0, 1, 1)
        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setMaximumSize(QtCore.QSize(200, 20))
        self.label.setAlignment(QtCore.Qt.AlignCenter)
        self.label.setObjectName("label")
        self.gridLayout.addWidget(self.label, 2, 0, 1, 1)
        self.gridLayout_2.addLayout(self.gridLayout, 0, 0, 1, 1)
        QLineEdit_test.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(QLineEdit_test)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 300, 22))
        self.menubar.setObjectName("menubar")
        QLineEdit_test.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(QLineEdit_test)
        self.statusbar.setObjectName("statusbar")
        QLineEdit_test.setStatusBar(self.statusbar)

        self.retranslateUi(QLineEdit_test)
        QtCore.QMetaObject.connectSlotsByName(QLineEdit_test)

    def retranslateUi(self, QLineEdit_test):
        _translate = QtCore.QCoreApplication.translate
        QLineEdit_test.setWindowTitle(_translate("QLineEdit_test", "MainWindow"))
        self.copy_button.setText(_translate("QLineEdit_test", "Copy!"))
        self.copy_button.setShortcut(_translate("QLineEdit_test", "Return"))
        self.label.setText(_translate("QLineEdit_test", "N/A"))

Danke !

Warum nicht einfach die klare Linie-Bearbeiten automatisch, anstatt dass eine zusätzliche Maus-Klick? Auch wäre es nicht schöner, wenn der Benutzer konnte nur drücken Sie die EINGABETASTE, um den text zu kopieren?
Die Anwendung an der ich arbeite nutzt die QLineEdit Feldern ein bisschen anders dann den Beispiel-code. Nachdem der Benutzer einen ticker code, der eingegeben text wird geändert, um zu zeigen, der volle name des Unternehmens im Zusammenhang mit der ticker-code vom Benutzer eingegeben (als Referenz und Bestätigung). Die enter-Verknüpfung umgesetzt wurde, in meinem Beispiel.
Ich verstehe immer noch nicht, warum Sie die zusätzliche Maus-klicken Sie. Warum nicht einfach die reset-line-edit-in der copy_and_print slot? Und was ist, wenn der Nutzer will, um die Maus verwenden, bewegen Sie den Cursor in die Zeile Bearbeiten? Es wäre ziemlich ärgerlich, wenn das deaktiviert den aktuellen text.
Wie gesagt, die eingegebenen ticker-code in das QLineEdit Feld wird ersetzt durch den vollständigen Namen des Unternehmens ein. Ich möchte diese Informationen bleiben sichtbar als Referenz, bis der Benutzer entscheidet, um einen neuen ticker-code. Wenn ich klar die QLineEdit in der copy_and_print(), es wird verschwinden, nachdem der Benutzer auf die Schaltfläche klickt. Es sei denn, ich falsch, was du sagst...

InformationsquelleAutor adam | 2017-10-10

Schreibe einen Kommentar