Форум программистов, компьютерный форум, киберфорум
Python: GUI, графика
Войти
Регистрация
Восстановить пароль
Другие темы раздела
Python Маска ввода для Entry и подсчет результата https://www.cyberforum.ru/ python-graphics/ thread1848180.html
Здравствуйте! Мне необходимо сделать программу - клавиатурный тренажер. При нажатии на enter в поле ввода Entry обновляется Label, где появляется элемент словаря и заодно выполняется проверка...
Крестики - нолики на PyQT, массив чисел Python
Здравствуйте, подскажите, пожалуйста, как сделать так, чтобы программа определяла комбинацию победы. import sys from PyQt4 import QtGui, QtCore class Example(QtGui.QMainWindow): def...
Python Создать программу для пропуска сотрудников на предприятия
Написать программу, для пропуска сотрудников на предприятия. Программа считывает личный код сотрудника (код сотрудника нужно вводить вручную). И если у него есть допуск на объект, то программа...
Python QLineEdit signal editingFinished () Если в текстовом поле, содержащем данный сигнал, сначала нажать ентер, а потом перевести мышь за пределы поля, то слот выполняется дважды. Каким сигналом можно заменить данный, чтобы избежать... https://www.cyberforum.ru/ python-graphics/ thread1847230.html
Python Вращение объекта вокруг своей оси https://www.cyberforum.ru/ python-graphics/ thread1846154.html
Есть такой класс class TPoint(): def __init__(self): self._x = random.randint(0, WIDTH - 35) self._y = random.randint(0, HEIGHT - 35) self._color =...
Запустить графическое приложение Python
Добрый вечер. Такой вопрос: У меня есть скрипт.ру в автозагрузке При нажатие на определенную клавишу ------ Нужно чтобы стартовал другой скрипт (графика pyQT (QWidget)) все это должно...
Как создать масив рандомних трехзначных чисел в которых нет совпадение двух цифр Python
Нужно 30 рандомных чисел которые никак не совпадають между собой двума цифрами, C#, windows F
Python Как вывести цифры от 0 до 9 в одном месте? Здравствуйте как вывести цифры от 0 до 9 в одном месте? from Tkinter import * import time root = Tk() for x in range(0,10): time.sleep(1) Label(root, text = x).place(x = 10, y =... https://www.cyberforum.ru/ python-graphics/ thread1844925.html
Python Написать программу, которая рисует изображение ниже https://www.cyberforum.ru/ python-graphics/ thread1844068.html
Написать программу, которая рисует изображение ниже
Python Написать программу, которая рисует фигуру, состоящую из окружности и прямоугольника с закругленными углами Написать программу, которая рисует фигуру, состоящую из окружности и прямоугольника с закругленными углами (нужно использовать рисование многоугольника с параметром smooth=1. Толщина линий - 5... https://www.cyberforum.ru/ python-graphics/ thread1844051.html
74 / 74 / 30
Регистрация: 12.02.2016
Сообщений: 199
0

PySide. Не применяется QShortcutContext

15.11.2016, 09:33. Просмотров 325. Ответов 1
Метки (Все метки)

Всем добрый день!

Разрабатываю приложение имеющее поле ввода (QLineEdit) с дефолтным значением (0.00). Пишу хоткей, который должен по нажатию на цифровую кнопку, независимо от фокуса на других виджетах стирать это дефолтное значение, если оно есть, и писать в это поле соответствующую цифру. Обнаружилось, что при фокусе на самом поле ввода хоткей никак не обрабатывается.

Недолгая гуглежка показала что второй конструктор QShortcut принимает в последнем параметре значение контекста, на котором будет действовать хоткей.

По логике, необходимо применять Qt.ApplicationShortcut, но он не сработал, как и все остальные. Поведение программы никак не меняется, хоткей не применяется при фокусе на поле ввода.

Привожу рабочий пример кода эмулирующий проблему:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
import sys
from PySide import QtGui
from PySide import QtCore
 
class Example(QtGui.QWidget):
    
    def __init__(self):
 
        super(Example, self).__init__()
        self.initUI()
        
 
    def initUI(self):
 
        self.lineedit = QtGui.QLineEdit("0.00")
 
        self.radio1 = QtGui.QRadioButton("Radio 1")
        self.radio2 = QtGui.QRadioButton("Radio 2")
 
        self.shortcut = QtGui.QShortcut(QtGui.QKeySequence(QtCore.Qt.Key_1), self, None, context=QtCore.Qt.ApplicationShortcut)
        self.shortcut.activated.connect(self.printNumberToField)
 
        mainLayout = QtGui.QVBoxLayout()
 
        mainLayout.addWidget(self.lineedit)
        mainLayout.addWidget(self.radio1)
        mainLayout.addWidget(self.radio2)
 
        self.setLayout(mainLayout)
        
        self.setWindowTitle('Test context')    
        self.show()
 
    def printNumberToField(self):
        if (self.lineedit.text() == "0.00"):
            self.lineedit.setText("")
 
        if (self.sender() == self.shortcut):
            self.lineedit.setText(self.lineedit.text() + "1")
 
        
def main():
    
    app = QtGui.QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())
 
 
if __name__ == '__main__':
    main()
Здесь поле ввода и два радио-баттона, при старте программы фокус на поле ввода. При попытке нажать кнопку "1" на клавиатуре, происходит дозапись в поле. Слот printNumberToField не срабатывает. Ежели запустить программу и кликнуть на один из радио-баттонов, тем самым сменив фокус на другой виджет и нажать "1", то слот отработает адекватно.

Подскажите пожалуйста, как же заставить хоткей работать на поле ввода? Что я делаю не так?

Windows 7, Python: 3.4, PySide: 1.2.4, Qt: 4.8.7

Вернуться к обсуждению:
PySide. Не применяется QShortcutContext
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.11.2016, 09:33
Готовые ответы и решения:

Ошибка в PySide
Установил на Ubuntu 14.04 pyside скачал много примеров, работают нормально, но когда делаю свою...

Чекбоксы в PySide
Всем привет! Вопрос следующий: создан чекбокс PySide.QtGui.QCheckBox, но умолчанию в состоянии...

PySide + WindowModality
Здравствуйте, уважаемые! Имеется тестовый пример на PySide - по нажатию кнопки на родительском...

Не могу установить pyside
добрый день. Хочу установить Pyside, но выдает ошибку. А как апгрейдить пип, я не знаю. Подскажите,...

1
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.