【问题标题】:Tkinter - Fill a frame with a text widget, using place()Tkinter - 使用 place() 用文本小部件填充框架
【发布时间】:2020-05-03 13:59:25
【问题描述】:

我正在尝试用文本小部件和滚动条填充框架。

我无法让文本填满框架,我尝试了许多不同的方法和我在网上看到的东西。

问题是我使用的是 place(),而大多数教程和 asnwers 都是关于 grid()。

这是我的代码:

 # --- frame 5 - SERIAL PRINTOUT ---

    frame5 = tk.Frame(root, bg='#80c1ff', bd=5)
    frame5.place(relx = 0, rely = 0.4, relwidth = 1, relheight = 0.4)
    scrollbar = tk.Scrollbar(frame5)
    scrollbar.pack(side=tk.RIGHT, fill=tk.Y)
    scrollbar.config(command=log.yview)
    log = tk.Text ( frame5, width=30, height=30, takefocus=0)
    log.pack()
    # attach text box to scrollbar
    log.config(yscrollcommand=scrollbar.set)

    # --- frame 5 - SERIAL PRINTOUT ---

增加宽度和高度不是我想要的,因为修改父框架也会让我能够修改文本小部件。 是不是有一种方法,或者设置让它自动填充父框架?

【问题讨论】:

  • 你为什么使用placepack 是更自然的选择。不过,从代码 log.pack() 来看,您似乎使用的是 pack 而不是 place
  • 我使用 place 因为这是我第一次做 GUI,我不想在 GUI 本身上浪费太多时间。因为我的 GUI 有很多框架,我不知道如何使用 pack() 将它们全部放置,将它们放在另一个之下,而不是使用 place() 我正在硬编码它们的位置。
  • 如果您确实想填充框架,那么使用place() 没有多大意义,因为不会有多个小部件可以处理。你应该只使用.pack(side = LEFT).pack(side = RIGHT)
  • @TheFluffDragon9 你的意思是 log.pack(side = tk.LEFT, side = tk.RIGHT)?这行得通吗?
  • @TheFluffDragon9 还是两个不同的命令?

标签: python tkinter text widget


【解决方案1】:

如果您希望Text 小部件填充其父框架内的可用空间,您需要通过pack()fillexpand 选项告诉包布局管理器:

log.pack(fill='both', expand=1)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-09
    • 1970-01-01
    • 1970-01-01
    • 2016-07-22
    • 1970-01-01
    相关资源
    最近更新 更多