Уведомления

Группа в Telegram: @pythonsu

#1 Май 18, 2014 06:37:14

Corban_Dallas
Зарегистрирован: 2014-02-21
Сообщения: 15
Репутация: +  0  -
Профиль   Отправить e-mail  

Обработчик событий

py.user.next и опять не то)
Распишу конкретней. Для виджета на основе QLineEdit необходимо назначить определённую реакцию только на клавишу enter, при нажати на все остальные клавиши, виджет должен вести себя стандартно. То есть, нажав на обычные клавиши, в поле qlineedit будет набираться текст, при нажатии ctrl+c выделенный текст скопируется в буффер, при нажатии home курсор вернётся в начало текста и т.д.. В ваших же примерах вы просто назначаете на enter один код, а на все остальные клавиши другой, набирать текст, и выполнять другие стандартные взаимодействия с qlineedit с клавиатуры - невозможно.

Офлайн

#2 Май 18, 2014 08:41:34

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9885
Репутация: +  853  -
Профиль   Отправить e-mail  

Обработчик событий

#!/usr/bin/env python3
 
import sys
from PyQt4 import QtGui, QtCore
 
 
class Example(QtGui.QWidget):
 
    def __init__(self):
        super(Example, self).__init__()
 
        self.initUI()
 
    def initUI(self):
 
        self.cl = CommandLine(self)
        self.setGeometry(500, 500, 200, 100)
        self.setWindowTitle('LineEdit')
        self.show()
 
 
class CommandLine(QtGui.QLineEdit):
    def __init__(self, parent=None):
        super(CommandLine, self).__init__(parent)
 
    def keyPressEvent(self, event):
        if event.key() == QtCore.Qt.Key_Return:
            self.setText('<enter>')
        else:
            super(CommandLine, self).keyPressEvent(event)
 
 
def main():
 
    app = QtGui.QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())
 
 
if __name__ == '__main__':
    main()

упростил до
Corban_Dallas
Для виджета на основе QLineEdit необходимо назначить определённую реакцию только на клавишу enter, при нажати на все остальные клавиши, виджет должен вести себя стандартно.



Офлайн

#3 Май 20, 2014 06:52:50

Corban_Dallas
Зарегистрирован: 2014-02-21
Сообщения: 15
Репутация: +  0  -
Профиль   Отправить e-mail  

Обработчик событий

py.user.next
super(CommandLine, self).keyPressEvent(event)
Вот! Эта строчка и была камнем преткновения. Благодарю, теперь работает так как и требовалось.

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version