如何在tkinter中获取画布的尺寸?

4

我正在进行以下代码的实验,以巩固我所拥有的一些想法。然而,它无法运行,因为画布似乎直到代码结束时才具有任何尺寸,这时已经太晚了,无法采取任何措施。如何确定画布的尺寸以便在' divw = int(screen_width / 100)'这行中使用?

#!/usr/bin/python3
from tkinter import *


window = Tk()
window.title('Timetable')
window.attributes('-zoomed', True)
screen_width = window.winfo_width()
screen_height = window.winfo_height()
canvas = Canvas(window, width = window.winfo_screenwidth(), height = window.winfo_screenheight(), bg='steelblue')

canvas.pack()
image = PhotoImage(file='blank.png')

screen_width = window.winfo_width()
screen_height = window.winfo_height()
divw = int(screen_width / 100)
print (divw)
for i in range(0, divw):
    print (i)
    canvas.create_image(i * 100+50, 50, anchor = NW, image=image)
mainloop()
2个回答

2

NameError: 名称 'tkinter' 未定义 - Gareth France
1
@DowonCha 我想你指的是 window.update(),这是一个小部件方法,而不是全局 tkinter 函数。此外,您不必强制更新整个 GUI,只需执行 window.update_idletasks() 即可。 - j_4321
谢谢你们两个。运行得非常完美。 - Gareth France

2

试试这样做:

try:
    import Tkinter as tk
except:
    import tkinter as tk

class myCanvas(tk.Frame):
    def __init__(self, root):
        #self.root = root
        self.w = 600
        self.h = 400
        self.canvas = tk.Canvas(root, width=self.w, height=self.h)
        self.canvas.pack( fill=tk.BOTH, expand=tk.YES)

        root.bind('<Configure>', self.resize)

    def resize(self, event):
        self.w = event.width
        self.h = event.height
        print ('width  = {}, height = {}'.format(self.w, self.h))

root = tk.Tk()   
root.title('myCanvas')
myCanvas(root)
root.mainloop()        

对我来说可行。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接