pythonでキャンバス上に円とテキストを配置を行い、マウスホイールで拡大縮小を行えるコードを作成しました。
拡大縮小の動作を行ったあとで、ボタンを押すと初期値のサイズに戻したいのですが、どのようにしたら良いでしょうか?
import tkinter as tk class FontSizer: def __init__(self, name='TkDefaultFont', size=12): self.name = name self.size = size def scale(self, sf): self.size *= sf @property def font(self): return self.name, int(self.size) def zoomer(event): global font_sizer sf = 1.1 if event.delta > 0 else 0.9 canvas.scale("all", 0, 0, sf, sf) font_sizer.scale(sf) canvas.itemconfigure('bangou', font=font_sizer.font) canvas.configure(scrollregion=canvas.bbox("all")) def shoki_size(): pass#初期のサイズに復元したい window = tk.Tk() window.title('サンプル') frame1 = tk.Frame(window,bd=1,relief="ridge") frame1.grid(row=1, column=0,sticky='news') btn = tk.Button(frame1, text="元のサイズに戻す",command=shoki_size) btn.grid(row=0, column=0,sticky="NEWS") frame2 = tk.Frame(window,bd=1,relief="ridge") frame2.grid(row=2, column=0,sticky='news') canvas = tk.Canvas(frame2, height=500, width=500, bg='white',bd=1,relief="ridge") canvas.grid(row=0, column=0,sticky='news') canvas.create_oval(250-3, 250-3, 250+3, 250+3,fill='red',tag="en") canvas.create_text(250, 250-8,text="1",tag="bangou",fill='red') canvas.create_oval(250-3, 300-3, 250+3, 300+3,fill='red',tag="en") canvas.create_text(250, 300-8,text="2",tag="bangou",fill='red') canvas.create_oval(400-3, 400-3, 400+3, 400+3,fill='red',tag="en") canvas.create_text(400, 400-8,text="2",tag="bangou",fill='red') font_sizer = FontSizer(size=12) canvas.itemconfigure('bangou', font=font_sizer.font) canvas.bind("<MouseWheel>", zoomer) frame2.grid_columnconfigure(0,weight=1) frame2.grid_rowconfigure(0,weight=1) window.grid_columnconfigure(0,weight=1) window.grid_rowconfigure(2,weight=1) window.mainloop()

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/12/17 07:59