Как мне получить размеры холста в tkinter?

1

Я экспериментирую с приведенным ниже кодом, чтобы укрепить некоторые идеи, которые у меня есть. Однако это не работает, потому что у холста нет никаких измерений до конца кода, и к этому времени уже слишком поздно что-либо делать. Как я могу определить размеры холста, чтобы использовать его в строке "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()
Теги:
tkinter

2 ответа

0

Попробуйте сделать это:

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()        

работает для меня.

0

Попробуйте вызвать tkinter.update() перед window.winfo_width()

qaru.site/questions/319218/...

  • 0
    NameError: имя 'tkinter' не определено
  • 1
    @DowonCha Я думаю, вы имеете в виду window.update() , это метод виджета, а не глобальная функция tkinter. Кроме того, вам не нужно принудительно обновлять весь графический интерфейс, вы можете просто выполнить window.update_idletasks()
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню