Не получается подвязать горячие кнопки в app
Как исправить ошибку? Я пытался привязать горячие клавиши, но у меня не получилось это сделать.
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 шт):
Автор решения: gil9red
→ Ссылка
Вам нужно использовать одну библиотеку. Если их не смешивать, то будет работать
Убедитесь, что в 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())