Migdal

jan Winanju
jan Winanju

Posted on

独自文字体系のための仮想キーボードとエディタ

ラテン文字とかでリガチャを使うような字を多く使うときの入力を補助するエディタを作り⋯⋯ChatGPTに書かせました。

使っている様子。

Image description

Python で書いています。buttons の中を書き換えれば、別の文字も使えます。

import tkinter as tk

class SoftKeyboard:
    def __init__(self, root):
        self.root = root
        self.root.title("独自文字体系入力キーボード")
        self.create_widgets()

    def create_widgets(self):
        self.text = tk.Text(self.root, width=50, height=10, font=('Arial', 24))
        self.text.grid(row=0, column=0, columnspan=10, pady=10)

        buttons = [
            '\u0301', '\u0303', '\u0304', '\u0307', '\u030A', '\u0310', '\u0323', '\u0325', '\u0329',
        ]

        row_val = 1
        col_val = 0

        for button in buttons:
            tk.Button(self.root, text='\u25CC'+button, width=3, height=1, font=('Arial', 32), command=lambda b=button: self.click(b)).grid(row=row_val, column=col_val, padx=5, pady=5)
            col_val += 1
            if col_val > 8:  # 1行に9個のボタンを配置
                col_val = 0
                row_val += 1

    def click(self, key):
        cursor_index = self.text.index(tk.INSERT)  # カーソルの位置を取得
        self.text.insert(cursor_index, key)  # 取得した位置に文字を挿入

if __name__ == "__main__":
    root = tk.Tk()
    keyboard = SoftKeyboard(root)
    root.mainloop()
Enter fullscreen mode Exit fullscreen mode

参考
合成可能なダイアクリティカルマーク

Top comments (0)