Если вам нужно отслеживать использование вашей памяти во время выполнения, пакет java.lang.management предлагает MBeans, который можно использовать для мониторинга пулов памяти в вашей виртуальной машине (например, пространство с эденом, поколение и т. д.), а также сбор мусора поведение.
Свободное пространство кучи, указанное этими MBeans, будет сильно отличаться в зависимости от поведения GC, особенно если ваше приложение генерирует много объектов, которые позже будут GC-ed. Один из возможных подходов - отслеживать свободное пространство кучи после каждого полного GC, которое вы можете использовать, чтобы принять решение об освобождении памяти от сохраняющихся объектов.
В конечном счете, ваш лучший выбор - ограничить вы сохраняете память, насколько это возможно, пока производительность остается приемлемой. Как отмечалось в предыдущем комментарии, память всегда ограничена, но ваше приложение должно иметь стратегию борьбы с исчерпанием памяти.
Мое первое предложение - использовать Designer для создания ваших графических интерфейсов.
Вот несколько учебников PyQt , чтобы помочь вам на правильном пути. Первый в списке - это то, где вы должны начать.
Хорошим руководством для выяснения того, какие методы доступны для определенных классов, является PyQt4 Class Reference . В этом случае вы посмотрите 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_()
Название объекта не очень важно. то, на что вы должны сосредоточиться, - это переменная, которая хранит объект lineedit (le) и объект pushbutton (pb)
QObject(self.pb, SIGNAL("clicked()"), self.button_clicked) def button_clicked(self): self.le.setText("shost")
Я думаю, что это то, что вы хотите. Надеюсь, я правильно понял ваш вопрос:)
self.le
в своей функции__init__
. Всюду, где вы используете его в своем классеForm
, он должен бытьself.le
. – tgray 10 June 2010 в 21:30