Python 画布和按钮的位置

Python 画布和按钮的位置,python,python-2.7,canvas,tkinter,tkinter-canvas,Python,Python 2.7,Canvas,Tkinter,Tkinter Canvas,我试着做一些类似图1的事情,但我不明白出了什么问题。当我运行代码时,会出现图2,我希望它看起来像第一张图片。有人能帮我吗?谢谢 使用place()而不是grid()。使用place()而不是grid()。使用行和列非常简单。您应该发布您尝试过的其他内容以及为什么它不是您想要的 import Tkinter main = Tkinter.Tk() main.geometry("1500x1000") main.title("Momentum") canvas = Tkinter.Canvas(m

我试着做一些类似图1的事情,但我不明白出了什么问题。当我运行代码时,会出现图2,我希望它看起来像第一张图片。有人能帮我吗?谢谢


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

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

使用行和列非常简单。您应该发布您尝试过的其他内容以及为什么它不是您想要的

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

使用行和列是非常直接的,您应该发布您尝试过的其他内容以及为什么它不是您想要的

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

不可能给您一个完美的答案,因为小部件布局所涉及的不仅仅是知道小部件的去向。你还需要考虑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()

不可能给您一个完美的答案,因为小部件布局所涉及的不仅仅是知道小部件的去向。你还需要考虑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()

我不知道如何使用它,我找过它,但找不到。你能帮我吗?地点很少是正确的选择。它允许您创建一个非常特定的布局,但是如果您在具有不同分辨率或不同字体的系统上运行UI,或者如果用户调整窗口大小,该布局将不会非常灵活。我不知道如何使用它。我查找了它,但找不到它。您能帮助我吗?place很少是正确的选择。它可以让你创建一个非常特定的布局,但是如果你在一个具有不同分辨率、不同字体的系统上运行UI,或者如果用户调整窗口的大小,那么这个布局将不会非常灵活。是的,那太好了,非常感谢。最后一个问题,您能否解释什么是pady以及grid_rowconfigure/columnconfigure是如何工作的?谢谢again@AliBeyit当前位置互联网上有大量的信息。从这里开始:是的,太好了,非常感谢。最后一个问题,您能否解释什么是pady以及grid_rowconfigure/columnconfigure是如何工作的?谢谢again@AliBeyit当前位置互联网上有大量的信息。从这里开始: