Не получается подвязать горячие кнопки в app

Рейтинг: 0Ответов: 1Опубликовано: 07.02.2023

Как исправить ошибку? Я пытался привязать горячие клавиши, но у меня не получилось это сделать.

from PySide6.QtWidgets import QApplication, QMainWindow, QWidget
from ui_main import Ui_MainWindow

from PyQt5.QtGui import QKeySequence
from PyQt5.QtWidgets import QShortcut
import sys


class App(QMainWindow):
    def __init__(self):
        super(App, self).__init__()
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)

        self.shortcut_open = QShortcut(QKeySequence('Ctrl+O'), self)
        self.shortcut_open.activated.connect(self.on_open)


    def on_open(self):
        print('Вы нажали: `Ctrl+O`')


if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = App()
    window.show()
    sys.exit(app.exec())

Вот ошибка:

TypeError: arguments did not match any overloaded call:
  QShortcut(parent: QWidget): argument 1 has unexpected type 'QKeySequence'
  QShortcut(key: Union[QKeySequence, QKeySequence.StandardKey, str, int], parent: QWidget, member: PYQT_SLOT = 0, ambiguousMember: PYQT_SLOT = 0, context: Qt.ShortcutContext = Qt.WindowShortcut): argument 2 has unexpected type 'App'

Пытался в классе App QMainWindow cменить на QWidget, но тогда выдает другая ошибка:

AttributeError: 'App' object has no attribute 'setCentralWidget'

Ответы

▲ 1Принят

Вам нужно использовать одну библиотеку. Если их не смешивать, то будет работать

Убедитесь, что в ui_main.py будет использоваться та же библиотека, что и в основном коде.

Импортированные классы и модули совпадают, осталось определиться с какой библиотекой будете работать:

from PySide6.QtWidgets import QShortcut, QMainWindow, QApplication
from PySide6.QtGui import QKeySequence

Или:

import sys

from PyQt5.QtWidgets import QShortcut, QMainWindow, QApplication
from PyQt5.QtGui import QKeySequence

from ui_main import Ui_MainWindow


class App(QMainWindow):
    def __init__(self):
        super().__init__()

        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)

        self.shortcut_open = QShortcut(QKeySequence('Ctrl+O'), self)
        self.shortcut_open.activated.connect(self.on_open)

    def on_open(self):
        print('Вы нажали: `Ctrl+O`')


if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = App()
    window.show()
    sys.exit(app.exec())