Python Virtual Keyboard

虛擬鍵盤使用 PyAutoGUI 套件,而此套件在 Linux 需使用 root 執行。

首先需把sudo 改成無需密碼執行

sudo visudo

todo 圖片

所以請在撰寫程式完後,比如 keybord.py,然 keyboard.py 改成可執行檔

sudo chmod 755 ./keyboard.py

然後在桌面新增 keyboard.sh 檔,內容如下

#!/bin/bash
sudo /home/thomas/cashier/keyboard.py

keyboard.sh 也要改成可執行檔

sudo chmod 755 /home/thomas/Desktop/keyboard.sh

UI設計

虛擬鍵盤的設計, 必需將每個按鈕的 focusPolicy 設定為 NoFocus

keyboard

PyAutoGui

此套件為自動化測試工具, 可以模擬鍵盤按下事件. 由 C語言寫成.
請先pip3 install PyAutoGUI套件

完整代碼

#!/usr/bin/python3
import sys
import pyautogui
from PyQt5.QtWidgets import QMainWindow, QApplication, QPushButton
from ui.ui_keyboard import *
class MainWindow(QMainWindow, Ui_MainWindow):
    def __init__(self, parent=None):
        super().__init__(parent)
        self.setupUi(self)
        self.btns=[]
        self.caps=True
        for w in self.__dict__.keys():
            if 'pushButton' in w:
                cmd='self.btns.append(self.{:s})'.format(w)
                exec(cmd)
        for btn in self.btns:
            btn.clicked.connect(self.btn_click)
    def btn_click(self, event):
        btn=self.sender()
        print(btn.text())
        if btn.text()=='&&':
            pyautogui.press('&')
        elif btn.text().lower()=='shift':
            if self.caps:
                for btn in self.btns:
                    btn.setText(btn.text().lower())
                self.caps=False
            else:
                for btn in self.btns:
                    btn.setText(btn.text().upper())
                self.caps = True
        else:
            pyautogui.press(btn.text())
if __name__ == "__main__":
    app = QApplication(sys.argv)
    mainwindow = MainWindow()
    mainwindow.show()
    app.exec()

ui_keyboard.ui代碼

qtdesigner keyboard ui檔下載

開機自動啟動程式碼

todo

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *