【发布时间】:2020-08-30 08:53:59
【问题描述】:
我正在尝试将某些画布的宽度设置为母版的宽度(全屏),将高度设置为母版的 1/5、3/10 和 1/2。窗口正确显示,但画布没有出现。我尝试使用 relwidth = 1 和 relheight = 0.2 的 place() 而不是 pack() 失败。 我只想让我的三个画布堆叠并水平填充窗口。
master = Tk()
master.attributes('-zoomed', True)
w = master.winfo_width()
h = master.winfo_height()
hu = int(h/10)
h1 = hu*2
h2 = hu*3
h3 = hu*5
c1 = Canvas(master, bg='grey', width = w, height = h1)
c1.pack()
c2 = Canvas(master, bg='blue', width = w, height = h2)
c2.pack()
c3 = Canvas(master, bg='red', width = w, height = h3)
c3.pack()
编辑:我的工作代码现在是:
c1 = Canvas(master)
c1.place(rely = 0, relheight = 0.2, relwidth = 1)
c2 = Canvas(master)
c2.place(rely = 0.2, relheight = 0.3, relwidth = 1)
c3 = Canvas(master)
c3.place(rely = 0.5, relheight = 0.5, relwidth = 1)
但我有一个副作用,我无法在中心对齐文本:
c1.create_text(0, 0, text = 'text', fill = 'red', font = ('olivier', 30, 'bold'))
c1.update()
我以这种不雅的方式解决了:
master.update_idletasks()
w = master.winfo_width()
h = master.winfo_height()
ww = int(w/2)
hh = int(h/10)
c1.create_text(ww, hh, text = 'text', fill = 'red')
【问题讨论】:
标签: python python-3.x tkinter tkinter-canvas