2014-03-13 102 views
2

在我重新發明之前。是否有一個(或多或少)用於Tkinter彈出式鍵盤的標準庫?我需要一個彈出式數字鍵盤(0-9,...,... ect)和一個全鍵盤(a-Z,A-Z,0-9,...,等等)。Tkinter彈出式鍵盤庫

我目前有一個很好的數字鍵盤,但(像往常一樣)我的客戶告訴我,我完成了他們想要一個完整的鍵盤。

在第二個問題,但同一主題。在這兩個兄弟姐妹窗口之間彈出的正確方法是什麼,以便它們都返回到原始父母,而不管你多次來回翻轉。

+2

我95%確定你的問題的簡單答案是否定的。大多數操作系統都有內置的屏幕鍵盤程序,所以只要選擇該字段,就可以使用該功能,因爲只要按下鍵盤按鈕就可以正常發送。它看起來像是你需要爲此創建一個鍵盤,你需要長時間的工作。不過,我相信你會在一些研究中找到這種接口的很好的例子。 –

回答

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的,所以別人也許能做到這一點,而不破壞父框架,但這個工作對我來說(甚至在樹莓有限ressources丕,它沒有造成任何問題)。