почему ключевые аргументы, которые регулируют размер холста tk, не работают после добавления кнопки? - PullRequest
1 голос
/ 08 июня 2019

Я пытался создать достаточно большое окно, в котором бы содержалось несколько виджетов. Поэтому я передал некоторые ключевые аргументы, чтобы отрегулировать размер холста, и он работал как ожидалось. Однако, когда я добавил кнопку внутри холста, окно вернулось к своему первоначальному небольшому размеру (который может быть размером по умолчанию).

Я проверил значение ширины высоты в конце кода: print (window ["width"]) дает 700 print (window ["height"]) дает 800

Это еще больше сбивает меня с толку, потому что если свойства width и height имеют значение, которое я ввел, почему добавление кнопки не позволит окну демонстрировать эти свойства?

import tkinter as tk

root=tk.Tk()

window=tk.Canvas(root,width=700,height=800) 
window.pack()

button=tk.Button(window,text="test button") #(1)
button.pack()#(2)
# the Canvas shows the wanted size when (1) and (2)is deleted

root.mainloop()

1 Ответ

1 голос
/ 09 июня 2019

Canvas или Frame уменьшится до необходимого размера, когда widget будет упакован или упакован. Но вы можете передать propagate, чтобы явно не указывать:

window=tk.Canvas(root,width=700,height=800)
window.pack()
window.propagate(0)

В качестве альтернативы вы можете использовать place метод в вашем Button виджете вместо:

button.place(relx=0.5,rely=0.5)
...