【问题标题】:How to grid columns in tkinter?如何在 tkinter 中对列进行网格化?
【发布时间】:2021-01-19 02:43:34
【问题描述】:

我正在使用 tkinter 制作项目,但在使用网格方法时遇到了一些问题

我正在尝试将所有图片放在屏幕的右侧,但它不起作用

这是我写的代码:

window = Tk()

window.geometry("500x400")

lemon_pic = PhotoImage(file="lemon.png")
melon_pic = PhotoImage(file="melon.png")
dragonFruit_pic = PhotoImage(file="DragonFruit.png")

lemon_picture = Label(window,image=lemon_pic,bg="white") 
melon_picture = Label(window,image=melon_pic,bg="white")
DragonFruit_picture = Label(window,image=dragonFruit_pic,bg="white")

lemon_picture.grid(row=4,column=10,sticky=E) 
melon_picture.grid(row=0,column=10,sticky=E)
DragonFruit_picture.grid(row=3,column=10,sticky=E)


window.mainloop()

这是我得到的输出: https://i.stack.imgur.com/GV1kn.png

【问题讨论】:

  • 可能是因为第10列之前的列没有任何东西,所以它们的宽度都是零。
  • 我做了我的研究,我发现的很多东西和你做的一样,但是我该如何解决呢?如何使图像在第 10 列中可见。
  • 使用win.columnconfigure(10, weight=1)(假设win是保存图像的小部件的容器)并在.grid(...)上设置sticky=E
  • 我刚试过,它有效!但仅在第 10 列..所以如果我要放置第 9 或第 8 列,它将不起作用
  • 然后将10改为.columnconfigure(...)中的列。

标签: python tkinter grid-layout


【解决方案1】:

如果图像位于像frame.pack(side='left') 这样的左侧粘性框架内:则将其更改为'right'。否则: 尝试使用E(东)而不是W(西)作为图像

lemon_picture.grid(row=0,column=10,sticky=E) 
melon_picture.grid(row=1,column=10,sticky=E)
DragonFruit_picture.grid(row=2,column=10,sticky=E)

【讨论】:

  • 我试过了还是不行
  • 我根本不使用 frame.pack(),我不知道如何使用它...如果我使用它会帮助我解决这个问题吗?
  • 如果您编辑问题以包含所有代码,解决问题可能更容易
  • @acw1668 回答了我的问题,非常感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-06
  • 1970-01-01
  • 2012-02-14
  • 1970-01-01
  • 1970-01-01
  • 2013-07-27
相关资源
最近更新 更多