我试图弄清楚如何在触摸屏上使用虚拟键盘,在 Windows 上使用 python 3.8 和 PyQt5。
我看到 Qt 有他自己的插件 QtVirtualKeyboard。我几乎遵循了这个链接中所做的,首先安装了支持虚拟键盘的 Qt 5.15,然后设置了环境变量。
一个简单的代码示例是这样的:
import os
import sys
from PyQt5.QtWidgets import QApplication
from PyQt5.QtWidgets import QLineEdit
from PyQt5.QtWidgets import QMainWindow
from PyQt5.QtWidgets import QVBoxLayout
from PyQt5.QtWidgets import QWidget
os.environ["QT_IM_MODULE"] = "qtvirtualkeyboard"
class MainWindow(QMainWindow):
def __init__(self):
super(MainWindow, self).__init__()
self.line_edit = None
self.init_ui()
def init_ui(self):
self.line_edit = QLineEdit()
self.line_edit2 = QLineEdit()
self.layout = QVBoxLayout()
self.main_widget = QWidget()
self.main_widget.setLayout(self.layout)
self.layout.addWidget(self.line_edit)
self.layout.addWidget(self.line_edit2)
self.setCentralWidget(self.main_widget)
if __name__ == "__main__":
app = QApplication(sys.argv)
mw = …Run Code Online (Sandbox Code Playgroud) 我在嵌入式设备上使用 qt 小部件,但虚拟键盘有问题。键盘显示为全屏并与所有应用程序重叠。
在Yocto 中的虚拟键盘顶部黑屏一文中描述了如何解决此问题。
简而言之,你需要用键盘找到QQuickWindow,并在这个窗口上调用setMask。然后键盘上方的区域就会变成透明的
我在如何使用虚拟键盘查找 QQuickWindow 时遇到问题。我尝试使用
QApplication::allWidgets()
Run Code Online (Sandbox Code Playgroud)
但窗户不在这里。