0

私は初めてTkinterを試し、ボタンがクリックされたときに関数を呼び出そうとしています。これは私のコードの一部です。mtは、ラベルの内容を変更できるように、ラベルに添付して動的に作成したラベルを指します。ユーザーが入力ボックスに何かを入力してボタンを押すと、ラベルが入力されたものに変更されるようにしたいと思います。

    def new(self):
        mt.set("New")
        e1 = Entry(master)
        e1.pack()
    def new_ok(self):
        mt.set("OK")
        #the next part is what I need help with
        if (checks if button has been clicked) button has been clicked:
            mt.set("#what it says in the entry box#")

これはどのようにすればよいですか?私はチュートリアルを見て読んだことがありますが、ボタンが押されたかどうかを確認して応答する方法を明確に認識しているものはありません。

4

2 に答える 2

2

私はTkinterの専門家ではありませんが、Tkinterのモジュールドキュメントで最初に目にするものの1つは、あなたの質問に対する答えが含まれているA Simple HelloWorldProgramです。(ほとんどのGUIツールキットと同様に、答えはコールバックまたはイベントハンドラー関数です。)メンバー関数say_hiHelloボタンのコールバックです。

于 2012-04-19T22:17:38.683 に答える
2

質問が「ラベルウィジェットをどのように更新しますか?」の場合
答えはウィジェットのconfigureメソッドです。

# Tkinter in Python 2.7 & tkinter in 3.2
import Tkinter as tk

class GUI(tk.Tk):
    def __init__(self):
        tk.Tk.__init__(self)

        bF = tk.Frame(self, bd=8, relief='sunken')
        bF.pack(expand='true', fill='x')
        changeButton = tk.Button(bF, text='Change', bd=4, fg='white',
                                relief='groove', activebackground='green',
                                command=self.change_label)
        changeButton.pack()

        self.entryLabel = tk.Label(self, text='Hello')
        self.entryLabel.pack()

        self.mEntry = tk.Entry(self, bd=4, relief='sunken')
        self.mEntry.pack()

    def change_label(self):
        data = self.mEntry.get()
        self.entryLabel.configure(text=data)


gui = GUI()
gui.mainloop()

この例のように、GUIをクラスにする必要があります。
そうすればあなたは自己を使うことができます。別の方法で作成されたウィジェットを参照するためのプレフィックス。

あなたの例では、「mt」は制御変数であると言っているように見えます。
答えはまだクラスを作ることです、そうすればあなたは自己を使うことができます。プレフィックス。


エントリウィジェットのコンテンツを変更したときにラベルを更新する必要がない限り、制御変数はおそらく必要ありません。

import Tkinter as tk

class GUI(tk.Tk):
    def __init__(self):
        tk.Tk.__init__(self)

        bF = tk.Frame(self, bd=8, relief='sunken')
        bF.pack(expand='true', fill='x')

        var = tk.StringVar()
        var.set('Hello')
        entryLabel = tk.Label(self, textvariable=var)
        entryLabel.pack()

        mEntry = tk.Entry(self, bd=4, relief='sunken', textvariable=var)
        mEntry.pack()

gui = GUI()
gui.mainloop()
于 2012-04-20T06:39:16.573 に答える