画布和按钮的位置Python

2024-06-25 23:06:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着做一些类似于图1的事情,但我不明白哪里出了问题。当我运行第一个代码时,它看起来像图2。有人能帮帮我吗?谢谢Figure1Figure2

import math
import Tkinter
import tkMessageBox
import Canvas



main = Tkinter.Tk()
main.geometry("1500x1000")
main.title("Momentum")
canvas = Tkinter.Canvas(main, width=1000, height =600)
canvas.grid(row=0,column=0)
box = canvas.create_rectangle(150,20,850,400)

ol1= Tkinter.Label(main, text="Object A")
ol2= Tkinter.Label(main,text="Object B")
ml1 = Tkinter.Label(main, text ="MASS")
ml2 = Tkinter.Label(main, text ="MASS")
me1 = Tkinter.Entry(main)
me2 = Tkinter.Entry(main)
ol1.grid(row=550, column=300)
ol2.grid(row=550, column=500)
ml1.grid(row=600, column =300 )
ml2.grid(row =600, column =500 )
me1.grid(row=620, column =300)
me2.grid(row=620, column=500)





main.mainloop()

Tags: textimportobjectmaintkintercolumnlabelmass
3条回答

不可能给你一个完美的答案,因为widget布局不仅仅是知道widget的去向。您还需要考虑Tkinter应该如何处理您尚未指定的额外空间。在

问题的一部分是,您似乎认为网格将为空的行和列分配空间,并且网格单元的大小是一致的。不会的,他们也不会。在

您可以在第1行、第100行、第1000行或第100000行放置一些内容,如果其他行都是空的,那么它在视觉上看起来是一样的。每一行和每列可以是零像素高、1000像素高,或者任意其他大小。Tkinter非常擅长计算行和列的高度和宽度,因此您不必为自己做太多计算。具有正权重的空行和列对于填充程序和分隔符很有用。在

总的来说,您需要的只是两列,四五行。画布应该跨越两列,我想。在

这里有一些东西可以让你开始。您可以使用行和列的权重以及填充值来调整所有的空白空间。在

import Tkinter

main = Tkinter.Tk()
main.geometry("1500x1000")
main.title("Momentum")

main.grid_rowconfigure(5, weight=1)
main.grid_columnconfigure(0, weight=1)
main.grid_columnconfigure(1, weight=1)

canvas = Tkinter.Canvas(main, width=1000, height=600)
ol1= Tkinter.Label(main, text="Object A")
ol2= Tkinter.Label(main,text="Object B")
ml1 = Tkinter.Label(main, text ="MASS")
ml2 = Tkinter.Label(main, text ="MASS")
me1 = Tkinter.Entry(main)
me2 = Tkinter.Entry(main)

canvas.grid(row=0,column=0, columnspan=2)
ol1.grid(row=1, column=0, pady=(0,20))
ol2.grid(row=1, column=1, pady=(0,20))
ml1.grid(row=2, column=0)
ml2.grid(row=2, column=1)
me1.grid(row=3, column=0)
me2.grid(row=3, column=1)

box = canvas.create_rectangle(150,20,850,400, outline="blue", fill="white")

main.mainloop()

使用行和列是非常直接的http://effbot.org/tkinterbook/grid.htm您应该发布您尝试过的其他内容以及为什么它不是您想要的。在

import Tkinter

main = Tkinter.Tk()
main.geometry("1500x1000")
main.title("Momentum")
canvas = Tkinter.Canvas(main, width=1000, height =600)
canvas.grid(row=0,column=1, columnspan=2)
box = canvas.create_rectangle(150,20,850,400)

ol1= Tkinter.Label(main, text="Object A")
ol2= Tkinter.Label(main,text="Object B")
ml1 = Tkinter.Label(main, text ="MASS")
ml2 = Tkinter.Label(main, text ="MASS")
me1 = Tkinter.Entry(main)
me2 = Tkinter.Entry(main)
ol1.grid(row=1, column=1)
ol2.grid(row=1, column=2)
ml1.grid(row=2, column =1 )
ml2.grid(row =2, column = 2)
me1.grid(row=3, column =1)
me2.grid(row=3, column=2)

main.mainloop()

使用place()而不是grid()。在

相关问题 更多 >