Qtvirtualkeyboard показывает, но не распознает вводPython

Программы на Python
Ответить
Anonymous
 Qtvirtualkeyboard показывает, но не распознает ввод

Сообщение Anonymous »


Я запускаю приложение Pyqt5 (5.15.9) с Python 3.11.2 на Raspberry Pi 4B (64-разрядная версия Debian Bookworm для Raspberry Pi OS) с подключенным сенсорным экраном.

Каждый раз, когда я вхожу в любое поле ввода текста, qtvirtualkeyboard отображается отлично, однако клавиатура не реагирует на нажатие любой клавиши и не вводит текст в поле ввода (редактирование текста). Я не вижу никаких ошибок или сообщений в терминале.

Я следовал этому ответу, чтобы установить qtvirtualkeyboard, и этому ответу, чтобы включить его в свое приложение. У меня нет опыта работы с qtvirtualkeyboard, и я подумал, что после шагов, описанных выше, я мог бы просто начать вводить текст в поля ввода.

Нужно ли мне вносить какие-либо изменения в поля ввода или приложение? Или я что-то совершенно не так понял? Я очень ценю любую помощь или подсказку!

PS: Я использую python-venv, но установил PyQt5 через apt (как в вышеупомянутом ответе) и впоследствии скопировал двоичные файлы в папку site-package моего venv. Пользовательский интерфейс был создан с помощью QtDesigner и загружается через PyQt5.uic.loadUi('ui-file.ui').

Изменить: Я только что попробовал еще раз, и в приведенном здесь простом минимальном примере (https://stackoverflow.com/a/63963718/6622587) все работает отлично! Я также использовал приведенную там вспомогательную функцию («handleVisibleChanged()») (см. ниже). Мое приложение запускается со следующим фрагментом кода (думаю, проблема может быть именно здесь):

if __name__ == '__main__': os.environ["QT_IM_MODULE"] = "qtvirtualkeyboard" defaultfont = QFont('Робото', 12) приложение = QApplication(sys.argv) app.setFont(шрифт по умолчанию) app.setStyle("Fusion") QGuiApplication.inputMethod().visibleChanged.connect(handleVisibleChanged) пример = МоеПриложение() sys.exit(app.exec_()) Минимальный пример моего приложения:
def handleVisibleChanged(): если нет QGuiApplication.inputMethod().isVisible(): возвращаться для окна в QGuiApplication.allWindows(): if window.metaObject().className() == "QtVirtualKeyboard::InputView": клавиатура = window.findChild(QObject, "клавиатура") если клавиатура не имеет значения «Нет»: область = окно.геометрия() area.moveTop(int(keyboard.property("y"))) window.setMask(QRegion(область)) возвращаться класс MyApp(QMainWindow): защита __init__(сам): супер(MyApp, self).__init__() self.initUI() Защиту initUI (сам): '''Инициализация и отображение пользовательского интерфейса''' # Загрузить пользовательский интерфейс uic.loadUi('ui-file.ui'), self) # Установите атрибуты и положение окна self.setWindowFlag(Qt.FramelessWindowHint) экран = QDesktopWidget().availableGeometry() если screen.width() < 1300 и screen.height() < 900: self.setFixedSize(screen.width(), screen.height()) еще: self.setFixedSize(1280, 800) self.move(0, 0) себя.шоу()
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»