Реализация обработчиков событий
Итак, при нажатии на кнопку выдается сообщение. Это указывает на то, что обработчик события уже есть. Его код можно увидеть в файле "form1.py". Имеются две простых возможности реализации полезного обработчика события нажатия на кнопку формы:
-- Внести изменения в существующий обработчик. Это плохой путь!!! При любых изменениях в дизайне формы и ее перегенерации наш обработчик будет утерян.
-- Создать собственную функцию. Т.к. сигнал нажатия уже связан с обработчиком, новый обработчик должен называться так же, как и существующий. Этого можно достичь, создав производный класс от класса формы. По этому пути и пойдем.
1. Создаем производный от формы класс следующего содержания (в файле "form1impl.py"):
# -*- coding: utf-8 -*-
from form1 import *
class Form1Impl(Form1):
def __init__(self,parent = None,name = None,fl = 0):
Form1.__init__(self,parent,name,fl)
if not name:
self.setName("Form1Impl")
def newSlot(self):
print "newSlot"
Для тестирования обработчика вначале просто выводим строку на стандартный вывод (для этого программу нужно выполнить из терминала).
2. Вносим изменения в модуль "main.py" с целью активизации нового класса:
#!/usr/bin/python
import sys
from form1impl import *
app=QApplication(sys.argv)
form=Form1Impl()
app.setMainWidget(form)
form.show()
app.exec_loop()
3. Проверяем. Если все работает (на терминал при нажатии на кнопку выводится сообщение "newSlot") движемся дальше, иначе ищем ошибки. Если все работает, возвращаемся к коду слота "newSlot" в файле "form1impl.py" и вносим в функцию "newSlot" такие изменения:
# -*- coding: utf-8 -*-
from form1 import *
class Form1Impl(Form1):
def __init__(self,parent = None,name = None,fl = 0):
Form1.__init__(self,parent,name,fl)
if not name:
self.setName("Form1Impl")
def newSlot(self):
self.textLabel1.setText(self.lineEdit1.text())
4. Выполняем, проверяем результаты. На этом все.
Источники:
cetus.com.ua
|
ПОМОЩЬ САЙТУ :
|
|
|