初期化中に可視領域を与えるためにtkintersキャンバスを取得するのに問題があります。この時間に可視領域を取得する必要がある理由は、作成直後にユーザーを表示します。Python tkinter canvasが起動時に可視領域を取得する
キャンバスは、それがボタンを押すことで__init__
した後、正常域の印刷されますが、機能が.grid()
__init__
内部
try:
import tkinter as tk
except:
import Tkinter as tk
class app(tk.Tk):
def __init__(self):
tk.Tk.__init__(self)
self.grid_columnconfigure(0,weight=1)
self.grid_rowconfigure(1,weight=1)
self.vis_area_btn = tk.Button(self,text="Print Visible Area",
command=self.prnt_vis_area)
self.canvas = tk.Canvas(self,bg="white",highlightthickness=0)
self.vis_area_btn.grid(row=0,column=0,sticky="nswe")
self.canvas.grid(row=1,column=0,sticky="nswe")
self.prnt_vis_area()
def prnt_vis_area(self,event=None):
#self.canvas.configure(scrollregion=(0,0,1,1))
x1 = self.canvas.canvasx(0)
y1 = self.canvas.canvasy(0)
x2 = self.canvas.canvasx(self.canvas.winfo_width())
y2 = self.canvas.canvasy(self.canvas.winfo_height())
print (x1,y1,x2,y2)
root = app()
root.mainloop()
[更新Tkinterのウィンドウ](https://stackoverflow.com/questions/35411940/updating-tkinter-window) –
@Rloqvistの可能性の重複この問題は、Tk()ウィンドウのメインループを起動する前に特定のtkinterウィジェットを更新することに関するものですが、tkinterウィジェットの属性を変更することについては全く別の問題です。 –