web-dev-qa-db-ja.com

ボタンクリックイベントの処理方法

私はPython=を学んでいるだけであり、基本的な概念と、すでにいくつかのコマンドラインプログラムを持っています。TkinterでGUIを作成する方法を学んでいます。

Entryウィジェットから一部のユーザー情報を受け入れる単純なGUIを作成しました。ユーザーが[送信]をクリックすると、ダイアログがポップアップ表示されます。

ダイアログはを要求するはずです。

問題は、ユーザーが[送信]をクリックしたときにイベントを処理する方法がわからないことです。

これが私のコードです:

from Tkinter import *

class GUI(Frame):

    def __init__(self,master=None):
        Frame.__init__(self, master)
        self.grid()

        self.fnameLabel = Label(master, text="First Name")
        self.fnameLabel.grid()

        self.fnameEntry = Entry(master)
        self.fnameEntry.grid()

        self.lnameLabel = Label(master, text="Last Name")
        self.lnameLabel.grid()

        self.lnameEntry = Entry(master)
        self.lnameEntry.grid()

        self.submitButton = Button(self.buttonClick, text="Submit")
        self.submitButton.grid()


    def buttonClick(self, event):
        """ handle button click event and output text from entry area"""
        pass


if __name__ == "__main__":
    guiFrame = GUI()
    guiFrame.mainloop()
8
Orboss

あなたはすでにあなたのイベント機能を持っていました。コードを次のように修正してください:

_   """Create Submit Button"""
    self.submitButton = Button(master, command=self.buttonClick, text="Submit")
    self.submitButton.grid()

def buttonClick(self):
    """ handle button click event and output text from entry area"""
    print('hello')    # do here whatever you want
_

これは、buttonClick()メソッドがクラス___init___メソッドの外にあることを除いて、@ Freakの回答と同じです。この方法の利点は、この方法でアクションをプログラムから呼び出すことができることです。これは、OOPでコード化されたGUIの従来の方法です。

7
joaquin

ボタンをクリックしたときに呼び出されるhandlerまたは関数を指定する必要があります。ボタンのプロパティcommandに関数の名前(関数を呼び出さない)を割り当てることで、これを行うことができます。

例えば:

_self.submitButton = Button(self.buttonClick, text="Submit", command=buttonClick)
_

_()_のbuttonClickプロパティとしてcommandを割り当てるときは、_self.submitButton_がないことに注意してください。

ハンドラー/関数buttonClick()eventという2番目のパラメーターは必要ないことに注意してください。

2
Wolfger