Я сделал что-то вроде этого:
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
Мое первое предложение - использовать 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_()
Имя объекта не имеет большого значения. вам следует сосредоточить внимание на переменной, в которой хранятся объект lineedit (файл) и объект кнопки (pb)
QObject(self.pb, SIGNAL("clicked()"), self.button_clicked) def button_clicked(self): self.le.setText("shost")
Я думаю, это то, что вам нужно. Надеюсь, я правильно понял ваш вопрос :)