私は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()
あなたはすでにあなたのイベント機能を持っていました。コードを次のように修正してください:
_ """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の従来の方法です。
ボタンをクリックしたときに呼び出されるhandlerまたは関数を指定する必要があります。ボタンのプロパティcommand
に関数の名前(関数を呼び出さない)を割り当てることで、これを行うことができます。
例えば:
_self.submitButton = Button(self.buttonClick, text="Submit", command=buttonClick)
_
_()
_のbuttonClick
プロパティとしてcommand
を割り当てるときは、_self.submitButton
_がないことに注意してください。
ハンドラー/関数buttonClick()
にevent
という2番目のパラメーターは必要ないことに注意してください。