0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Pythonを基礎から学ぶその5 デスクトップのアプリを作るその3

Posted at

この記事は、JavaとPythonを基礎から学びたい私のための Advent Calendar 2024の18日目の記事です。
アプリっぽくしていきます

ボタンを押したときの動作

ボタンなので、押したときに何かが起こるようにします。まずはボタンを押したときに文字が出てくるようにします。

commandを使う方法

def ClickEvent():
    label2=tk.Label(text='ボタン押したな',foreground='#00fa9a')
    label2.pack(padx=30,pady=10)   
 
button=tk.Button(text='ボタン',command=ClickEvent)
button.pack(padx=30,pady=20)

ボタンを押すとbuttonの()内のcommandが発動して、その上のClickEventが呼ばれます。今回はボタンが押されたときにメッセージを出すようにしています。

ちなみにdefはdefine(定義)のようです。Tabキーで右にずらした(インデント)文章がdefの内容です。

bindを使う方法

ボタンを押したときのイベントは、bindを使うことでも設定できるみたいです。こちらは先ほどのcommandと違い、クリックの種類やマウスカーソルが対象物上に存在するかなど様々なイベントを起こせます。
ただしtkinterのボタンでは、クリックのイベントが右クリックしかできませんでした。マウスカーソルが対象物内に入ってきたかなどはうまく動作するようです。
追加した文です

def leftClick(event):
   # Left=Left+1
    label2=tk.Label(text='左')
    label2.pack(padx=10,pady=20)
def mouseEnter(event):
    #Right=Right+1
    label3=tk.Label(text='マウスカーソルがやってきました')
    label3.pack(padx=50,pady=20)
 
button=tk.Button(text='クリックかカーソル移動')
button.bind("<Button-1>",leftClick)
button.bind("<Enter>",mouseEnter)
button.pack(padx=30,pady=30)

bindの()内、,の左側がイベントの種類(ボタンが押された、マウスカーソルが来たなど)です。"<>"で囲みます。右側はイベントが発生したときに呼ばれるものになります。
tkinterで動かせるもの一覧

イベントの種類 説明
Button-1 左クリック(押し込んだ時)
ButtonRelease-1 左クリック後、ボタンが離れた時
Enter マウスカーソルが対象物に来た時
Leave マウスカーソルが対象物から離れた時
Motion マウスカーソルが対象物上で動いた時

tkinterで使う以外であれば、うえで紹介した以外にもいろいろなものがあるようです。
これでボタンを動かすことができます。

文字入力できるようにする

文字も行けるようです。これができると、例えば数字を入力してボタンを押すと瞬時に計算してくれる電卓のようなものも作れそうです。

Text()を使用する

txt=tk.Text()
txt.pack(padx=30,pady=60)

これで文字が入力できるフィールドが用意されます。また、入力された文字は

inputtxt=txt.get(1.0,tk.END)

こんな感じでgetを用いることで取得可能なようです
このgetの文は必要なときに使ってください。getされるタイミングは、この処理が行われる瞬間でした。テキストエリアを作成したときに一緒に書いても反応しません。
自分の場合は、ボタンが押されたときに文字がgetされるようにしました。

txt=tk.Text()
txt.pack(padx=30,pady=60)
def leftClick(event):
    inputtxt=txt.get(1.0,tk.END)
    label2=tk.Label(text='入力された文字:'+inputtxt)
    label2.pack(padx=10,pady=20)

こんな感じです。ちなみに()内、","の左側の1.0はget開始位置です。ここでは1.0なので1行目0文字目という意味です。","の左側は終了位置のようです。ENDで最後まで受け付けてくれるみたいです。

Entry()を使用する

先ほどのtextとは異なり、1行の入力ができるものです。webサイトとかによくある、名前入力欄みたいなものです。

txt=tk.Entry(window)
txt.pack(padx=30,pady=60)

Entry()の()内、windowは最初に設定したwindow=tk.Tk()のものです。なくても動くようですが、ないよりはあった方がいいと思います。
文字を取得する場合は、

inputtxt=txt.get()

先ほどと同じくgetで行けました。今回は()内が空であっても取得してくれるみたいです。

まとめ

ボタンを押したときの処理の仕方にもさまざまな種類がある。また、文字を入力したり入力された文字を受け取ったりする処理の仕方もまたいろいろ存在していた。

参考文献

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?