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

Я сделал что-то вроде этого:

from math import trunc


def truncate(number, decimals=0):
    if decimals < 0:
        raise ValueError('truncate received an invalid value of decimals ({})'.format(decimals))
    elif decimals == 0:
        return trunc(number)
    else:
        factor = float(10**decimals)
        return trunc(number*factor)/factor
29
задан ClydeTheGhost 23 June 2016 в 14:51
поделиться

2 ответа

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

Вот несколько руководств по PyQt , которые помогут вам встать на правильный путь. С первого в списке следует начать.

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

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

Чтобы сделать ваши элементы графического интерфейса доступными для остальной части объекта, поставьте перед ними 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_()
41
ответ дан 27 November 2019 в 18:34
поделиться

Имя объекта не имеет большого значения. вам следует сосредоточить внимание на переменной, в которой хранятся объект lineedit (файл) и объект кнопки (pb)

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

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

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

1
ответ дан 27 November 2019 в 18:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: