【问题标题】:Python tkinter set text widget to bottom of window using gridPython tkinter 使用网格将文本小部件设置为窗口底部
【发布时间】:2020-04-12 21:42:50
【问题描述】:

我对使用 tkinter 完全陌生,目前正在玩网格。我已将窗口设置为 1000x500,并在左上角有这样的图像...

window = Tk()
window.geometry("1000x500") #Width x Height

logo = PhotoImage(file="logo.gif")
Label (window, image=logo, bg="#f0f0f0") .grid(row=0, column=0)

T = Text(window, height=2, width=30)
T.insert(END, "Just a text Widget\nin two lines\n")
T.grid(row=2, column=0)

我希望将文本小部件放置在窗口底部,我已尝试将行设置为更大但没有任何效果。

我哪里错了?

【问题讨论】:

标签: python tkinter


【解决方案1】:

显然,最简单的方法是使用.pack()而不是.grid()。但是如果你真的想使用.grid()。你需要设置rowconfigure()来设置行的权重,而sticky="s"sticky=S 使其位于底部。

您的代码可以是:

from tkinter import *

window = Tk()
# window.geometry("1000x500") #Width x Height

logo = PhotoImage(file="xxx")
Label (window, image=logo, bg="#f0f0f0") .grid(row=0, column=0)

T = Text(window, height=2, width=30)
T.insert(END, "Just a text Widget\nin two lines\n")
T.grid(row=1, column=0, sticky=S)

window.grid_rowconfigure(1,weight=1)

window.mainloop()

记住,如果你想总是放在底部并且只使用.gird(),你需要设置文本的行重。所以我建议你把所有的小部件(除了底部的文本小部件)在Frame 中。在Frame 中使用.grid()。在FrameText 中使用.pack()

【讨论】:

  • 你证明了吗?我觉得这不是OP想要的。再想想你最后一句话,不能用两个Layout Manager,或者改写一下就明白你的意思了。
  • 我的意思是,如果他想使用两种类型的布局管理器,他可以使用一个框架将他的widget放在frame中(在框架中,他所有的widget都可以使用.grid()) ,框架可以使用.pack()
  • @stovfl:您可以在应用程序中混合使用gridpack,但不能与共享相同父/主的小部件一起使用。此答案中的建议是有效的建议。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-25
相关资源
最近更新 更多