Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 19, 2009 02:22:02

villager
От:
Зарегистрирован: 2008-11-04
Сообщения: 111
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt - управление фокусом

vista, python 2.6.3 PyQt 4.6
в окне - три QLineEdit
в каждом добавлен метод valid, который сравнивает ввод пользователя с заданным значением valval
надо запретить выход из lineedit, если введена не та информация
у меня курсор начинает мигать сразу в двух lineeditах (и в том котором хочу остаться, и в том куда не должен попасть)

что не так делаю?

# -*- coding: utf-8 -*-
from PyQt4.QtGui import *
from PyQt4.QtCore import *
import PyQt4.Qt
import sys

class myLineEdit(QLineEdit):
def valid(self):
if self.text()==self.valval:
return True
else:
return False

class ef(QObject):
outFoc=None
inFoc=None
def eventFilter(self, ob, ev):
if ev.type()==QEvent.FocusIn:
print "in", ob.valval
return False
if ev.type()==QEvent.FocusOut:
print "out", ob.valval
if ob.valid():
return False
else:
return True
return False

if __name__ == "__main__":
app = QApplication(sys.argv)
MyApp = QApplication(sys.argv)

app = QApplication(sys.argv)
q=QDialog()
ef=ef()
f=QFormLayout()
l1=myLineEdit("1")
l2=myLineEdit("2")
l3=myLineEdit("3")
l1.installEventFilter(ef)
l2.installEventFilter(ef)
l3.installEventFilter(ef)
l1.valval="1"
l2.valval="2"
l3.valval="3"
f.addRow("label 1", l1)
f.addRow("label 2", l2)
f.addRow("label 3", l3)

q.setLayout(f)
q.show()
sys.exit(app.exec_())



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version