ГЛАВНАЯ      ДОКУМЕНТАЦИЯ      СТАТЬИ      ПРОГРАММЫ      ССЫЛКИ      ФОРУМ      ДРУГОЕ   

Реализация обработчиков событий

        Итак, при нажатии на кнопку выдается сообщение. Это указывает на то, что обработчик события уже есть. Его код можно увидеть в файле "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

ПОМОЩЬ САЙТУ :
sms.Є®ЇЁ«Є  *PythonUA*
Для чего Вы используете Python?
Admin( 46 )
Web( 61 )
GUI( 37 )
Embedding ( 16 )
Другое( 34 )
Какими продуктами Вы пользовались?
Zope( 15 )
Plone( 1 )
TG( 7 )
Django( 15 )
Twisted( 5 )
Другими( 10 )
ДРУЗЬЯ:
LUG.DN.UA
D-FENS.ORG.UA
SLAV0NIC.XSS.RU
CETUS.COM.UA
ENTDEV.ORG
[Python Powered]
Rambler's Top100
Copyright © 2006 python.com.ua