1

私はこの小さな厄介な問題を抱えています.tkinterを使ってpython 3で答えを考えるのは簡単だと思います.

したがって、「enterCountryBtn」を押すたびに有効にしたいこのオンスクリーンキーボードを作成していますが、kybrd_list から 1 つのボタン/「キー」のみを有効にします。

質問は簡単です。「enterCountryBtn」を押すたびに完全なリストが有効になっていることを確認するにはどうすればよいですか?

これは、私の問題が発生しているように見えるコードの一部です。

def countryCommand():
    keyboardButtons['state']=tk.NORMAL
    print("country")


kybrd_list = [
'q','w','e','r','t','y','...']

ro = 2
co = 0

for k in kybrd_list:
     *A bunch of stuff goes here*
     keyboardButtons=tk.Button(root, text=k, width=5, relief=rel2, command=cmd2, state=tk.DISABLED
     *and some more stuff here*

enterCountryBtn = tk.Button(root, width=30, text="enter Country", command=countryCommand)
enterCountryBtn.grid(row=7, column=0)

前もって感謝します、 ニールス

4

1 に答える 1

1

リストをkeyboardButtons作成します。

def countryCommand():
    for button in keyboardButtons:
        button['state']=tk.NORMAL

keyboardButtons = []
for k in kybrd_list:
    ...
    keyboardButtons.append(tk.Button(root, text=k, width=5, relief=rel2, command=cmd2, state=tk.DISABLED))
    ...

実行可能な例を次に示します。

import Tkinter as tk
kybrd_list = ['q','w','e','r','t','y','...']
def onclick(k):
    def click():
        print(k)
    return click

class SimpleGridApp(object):
    def __init__(self, master, **kwargs):
        self.keyboardButtons = []
        for i, k in enumerate(kybrd_list):
            button = tk.Button(root, text=k, width=5, relief='raised',
                               command=onclick(k), state=tk.DISABLED)
            button.grid(row=i, column=0)
            self.keyboardButtons.append(button)

        self.enterCountryBtn = tk.Button(
            root, width=30, text="enter Country", command=self.countryCommand)
        self.enterCountryBtn.grid(row=7, column=0)            
    def countryCommand(self):
        for button in self.keyboardButtons:
            button['state']=tk.NORMAL

root = tk.Tk()
app = SimpleGridApp(root, title='Hello, world')
root.mainloop()
于 2013-05-27T16:57:56.677 に答える