マウスのof/offで別々の処理をさせる

先に和歌の読み出しプログラムを作りましたが、歌人も一緒に表示されるので少し頭の体操用として、マウスを離したら表示されるような関数を作りました。

もう一つコマンドボタンを付ければ出来るのですが、この方法の方が簡単なのでこれにします。 ただ自分が知らなかってだけでしたね。

今までボタン1のクリックで、和歌と歌人を表示させていました(btn1.bind("<Button>", 和歌_Show))。
それをボタン1を離したときに発生するeventで歌人を表示させることにしました(btn1.bind("<ButtonRelease>", 歌人_Show))。

変更部分のみ載せます。 他は変更なしです。

 

1   def show_データ(count,num, 和歌_和歌群, 歌人_和歌群):  # 乱数に応じた要素を表示する関数
2       和歌 = 和歌_和歌群[num]  # データを和歌に格納
3       歌人 = 歌人_和歌群[num]
4    
5      #ボタン1(開始/次)の関数
6       def  和歌_Show(event):
7           global 乱数
8           乱数 = random.randrange(0, count)
9           和歌 = 和歌_和歌群[乱数]  # 和歌に格納
10    
11           txt1.delete(0, tk.END)
12           txt2.delete(0, tk.END)
13    
14           txt1.insert(0, f' {和歌}')  #txt1.insert(tk.END, 和歌)でもOK
15    
16       def  歌人_Show(event):
17           歌人 = 歌人_和歌群[乱数]
18    
19           txt2.delete(0, tk.END)
20           txt2.insert(0, f' {歌人}')
21    
22       btn1.bind("<Button>", 和歌_Show) #マウスの左ボタンonでdef  和歌_Show(event):が処理される
23       btn1.bind("<ButtonRelease>", 歌人_Show)#マウスの左ボタンoffでdef  歌人_Show(event):が処理される
24    
25 count, 和歌群 = read_和歌群()
26 和歌_和歌群 = 和歌群[0]
27 歌人_和歌群 = 和歌群[1]

 

これでマウスonで和歌が、offで歌人が表示されます。 ちょっとしたQ&Aソフトになりました。

 

終わり

 

Python別館
Python別館 目次

Pythonで作成したアプリ関連の記事は「Python別館」に、widgetやその使用方法・それを使 …

Python別館
Q&A テンプレート GUI編

良く英単語アプリなどを作る時に似たようなアプリになりますので、すぐ真似できるようにテンプレートらしき …

Python別館
文字列の配置

ラベル、テキストボックスなどで、文字列の配置が微妙に異なります。 いつも迷うので基本的なものを挙げて …