【问题标题】:Tkinter Canvas text entry field positioningTkinter Canvas 文本输入字段定位
【发布时间】:2018-03-21 08:23:26
【问题描述】:

我有一个画布字段并需要一个文本输入框,但我没有找到可行的解决方案。 现在有一个输入字段,但在北中心,我需要在左侧站点上的这个输入字段,我不知道如何定位这个输入字段。

GUI = Tk()
GUI.configure(background="#002E52")
GUI.title('Templatewriter')
GUI.geometry("1920x1080")
e = Entry(GUI)
e.pack()
e.delete(0, END)
e.insert(0, "Überschrift eingeben")
box2 = Canvas(GUI, width=200, height=50)
box2.pack()
box2.place(x=0, y=0)
box2.create_text((50, 25), text="Überschrift 1 ", fill="black")
linie = Canvas(GUI, width=10, height=1080)
linie.pack()
box1 = Canvas(GUI, width=1920, height=1080)
box1.pack()
GUI.mainloop()

还有办法吗?

【问题讨论】:

  • 在使用pack() 时,您可以提供帮助。所以pack(side="left") 可能会有所帮助,但我更愿意在这里使用grid()。我认为这会让布局管理变得更容易。
  • 不清楚你在这里想要完成什么。您的计划目标是什么?
  • 不要使用包装并放置在 box2 上。坚持一个或另一个。

标签: tkinter tkinter-canvas tkinter-entry tkinter-layout


【解决方案1】:

尽量不要混用不同的布局管理器,会很乱。

使用 grid() 或 place() 方法代替打包。由于程序中的布局很简单,因此使用 grid() 会更有效。

object = Canvas(GUI, etc.)
object.grid(row = 1, column = 1)

网格方法就像战舰一样工作。你指定行列,对象就放在那里。

place() 方法更精确(你已经在使用它了)。如果有特定的测量值,我建议在整个程序中使用它。

object = Canvas(GUI, etc.)
object.place(x = 30, y = 50)

更多信息:http://zetcode.com/gui/tkinter/layout/

【讨论】:

  • 感谢您的回答!我将 Canvas 用于中间的小线,但我现在改为 .grid 系统。其他问题:我可以设置行高吗?输入字段是 200x100px 大小?
  • 您不需要为此使用一行。只需使用 .config(width = x, height = y) 修改对象本身的尺寸。但这会产生问题,因为输入字段下方的对象会偏离中心。我建议为此创建一个框架,或者如果您打算这样做,则只需使用 place() 方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-02-27
  • 2023-04-03
  • 2013-07-15
  • 2019-04-17
  • 1970-01-01
  • 2011-04-11
  • 1970-01-01
相关资源
最近更新 更多