Подтвердить что ты не робот

Как получить текст в QlineEdit, когда QpushButton нажата в строке?

Я пытаюсь реализовать функцию. Мой код приведен ниже.

Я хочу получить текст в lineedit с именем объекта "хост" в строке "shost", когда пользователь нажимает кнопку с именем "connect". Как я могу это сделать? Я пробовал и терпел неудачу. Как реализовать эту функцию?

import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *


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

        le = QLineEdit()
        le.setObjectName("host")
        le.setText("Host")
        pb = QPushButton()
        pb.setObjectName("connect")
        pb.setText("Connect") 
        layout.addWidget(le)
        layout.addWidget(pb)
        self.setLayout(layout)

        self.connect(pb, SIGNAL("clicked()"),self.button_click)

        self.setWindowTitle("Learning")

    def button_click(self):
    #i want the text in lineedit with objectname 
    #'host' in a string say 'shost'. when the user click 
    # the pushbutton with name connect.How do i do it?
    # I tried and failed. How to implement this function?




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

Теперь, как мне реализовать функцию "button_click"? Я только что начал с pyQt!

4b9b3361

Ответ 1

Мое первое предложение - использовать Designer для создания ваших графических интерфейсов. Вводя их в отстой, занимает больше времени, и вы обязательно совершите больше ошибок, чем Дизайнер.

Вот несколько учебных пособий PyQt, чтобы помочь вам на правильном пути. Первый в списке - это то, где вы должны начать.

Хорошим руководством для выяснения того, какие методы доступны для определенных классов, является описание класса PyQt4. В этом случае вы бы посмотрели QLineEdit и увидели способ text.

Чтобы ответить на ваш конкретный вопрос:

Чтобы сделать ваши элементы GUI доступными для остальной части объекта, представьте их self.

import sys
from PyQt4.QtCore import SIGNAL
from PyQt4.QtGui import QDialog, QApplication, QPushButton, QLineEdit, QFormLayout

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

        self.le = QLineEdit()
        self.le.setObjectName("host")
        self.le.setText("Host")

        self.pb = QPushButton()
        self.pb.setObjectName("connect")
        self.pb.setText("Connect") 

        layout = QFormLayout()
        layout.addWidget(self.le)
        layout.addWidget(self.pb)

        self.setLayout(layout)
        self.connect(self.pb, SIGNAL("clicked()"),self.button_click)
        self.setWindowTitle("Learning")

    def button_click(self):
        # shost is a QString object
        shost = self.le.text()
        print shost


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

Ответ 2

Название объекта не очень важно. то, на что вы должны сосредоточиться, - это переменная, которая хранит объект lineedit (le) и объект pushbutton (pb)

QObject(self.pb, SIGNAL("clicked()"), self.button_clicked)

def button_clicked(self):
  self.le.setText("shost")

Я думаю, что это то, что вы хотите. Надеюсь, я правильно понял ваш вопрос:)