【问题标题】:Tkinter Popup Keyboard LibraryTkinter 弹出式键盘库
【发布时间】:2014-03-13 16:47:32
【问题描述】:

在我重新发明轮子之前。是否有(或多或少)用于 Tkinter 弹出式键盘的标准库?

我需要弹出式数字键盘(0-9,.,...等)和全键盘(a-Z,A-Z,0-9,.,...等)。

我目前有一个不错的数字键盘,但(像往常一样)我完成后我的客户告诉我,他们也想要一个全键盘。

有点像第二个问题,但主题相同。在这两个同级窗口之间弹出的正确方法是什么,以便无论您来回翻转多少次,它们都返回到原始父级。

【问题讨论】:

  • 我 95% 确定您的问题的简单答案是否定的。大多数操作系统都有一个内置的屏幕键盘程序,因此只要选择了该字段,您就可以使用它作为键盘按下的正常发送。看起来如果您需要为此创建一个键盘,那么您将面临漫长的挑战。不过,我相信只要稍加研究,您就会找到此类接口的好例子。

标签: python tkinter on-screen-keyboard


【解决方案1】:

我遇到了同样的问题,除了自己创建(或至少大幅改进)一个解决方案外,没有找到合适的解决方案。我用过

petemojeiko's virtual keyboard on GitHub

作为创建my own solution 的起点。它需要可用于输入复杂的密码,因此它具有常规键盘支持的小写和大写字母、数字和(大多数)符号的键。

但是,由于需要将其放在小屏幕上,我将数字和符号放在第三层(如符号移位)。这给我带来了与您在问题的第二部分(在层之间切换)中遇到的基本相同的问题。

我通过实现三个键盘(每层一个)并销毁一个特定的键盘以及包含它的框架并在每次我想在这些层之间进行更改(或切换到不同的条目小部件)时创建一个新的键盘来解决它):

self.frame1.destroy()
self.frame2.destroy()
self.kb.destroy()

self.frame1 = ttk.Frame(self, width=480, height=280)
self.frame1.pack(side="top", pady=30)
self.kb = vKeyboard(attach=self.entry1,
                   x=self.entry1.winfo_rootx(),
                   y=self.entry1.winfo_rooty() + self.entry1.winfo_reqheight(),
                   keysize=self.keysize,
                   parent=self.frame1,
                   controller=self.controller,
                   enterAction=self.enterAction)

我还是 Python/Tkinter 的新手,所以其他人可能能够在不破坏父框架的情况下做到这一点,但这对我有用(即使在 Raspberry Pi 的有限资源上,它也不会导致任何问题)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-12
    • 1970-01-01
    • 2015-06-06
    相关资源
    最近更新 更多