#ウインドウリサイズイベントの挙動について
Python勉強中の者です。Windowsでウインドウの大きさに応じて、並び等が変化するプログラムを作っているのですが、なぜか使うPCによって挙動が違います。
あるPCは、期待通りの動きをするのですが、違うPCではリサイズしようと1ピクセルでも動かした途端、イベントが実行されてしまい、結果リサイズできません。
その場合、特にエラー等もありません。
この原因、または回避方法(イベントの処理をウインドウリサイズが終わるまで待つ等)をご教授ください。
windowResize.py
1from tkinter import * 2import tkinter as tk 3import os 4 5 6#ウィンドウ全体の横の大きさ 7w = 900 8h = int(w *3/4) 9 10 11#ウインドウのサイズ変更を感知 12def callback(event): 13 global w , h , gener_hr , special_hr , face_hr ,cvs_gener,cvs_special,cvs_face 14 15 # Main Window以外のイベントは無視 16 if (event.type != 'configure') and (event.widget != root): 17 return 18 19 # サイズが変わってなかったら無視 20 if (event.width == w) and (event.height == h): 21 return 22 23 # グローバル変数を更新 24 w = event.width 25 h = int(w*3/4) 26 Canvas.destroy(cvs_gener) 27 Canvas.destroy(cvs_special) 28 Canvas.destroy(cvs_face) 29 canvas_all(w , h) 30 print(w, h,"event=",event) 31 root.geometry(str(w) +"x" + str(h) ) 32 33def canvas_all(w,h): 34 global cvs_gener,cvs_special,cvs_face 35 cvs_gener=tk.Canvas(root,width=w,height=int(h/3),bg="linen") 36 cvs_special=tk.Canvas(root,width=w ,height=int(h/3),bg="tan") 37 cvs_face=tk.Canvas(root,width=w,height=int(h/3),bg="light blue") 38 cvs_gener.pack() 39 cvs_special.pack() 40 cvs_face.pack() 41 42######実行プログラム######## 43root = Tk() 44root.title('4:3ウインドウ') 45root.geometry(str(w) +"x" + str(h) ) 46button = tk.Button(root,text="ボタン") 47button.pack() 48canvas_all(w, h) 49root.bind("<Configure>", callback) 50root.mainloop()
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/12/08 05:06
2021/12/08 14:27
2021/12/09 00:19 編集
2021/12/09 00:39
2021/12/09 11:24