【问题标题】:How to align text input on Tkinter grid如何在 Tkinter 网格上对齐文本输入
【发布时间】:2020-06-25 20:56:40
【问题描述】:

我确信这是一个快速修复,但我似乎无法弄清楚如何将我的输入文本框(第 4 列)与(第 1-3 列)中的图像和按钮对齐。这是我的代码,以及实际诗句所需输出的图像:

我已尝试更改 t1 - t3(章节编号输入)的列和行位置,但它们仍然显示在其他网格“框”下方而不是在同一行中。

   from tkinter import *
from tkinter import ttk

# pip install pillow
# from pillow import Image, ImageTk
from PIL import ImageTk, Image

WD = Tk() # window
FM = Frame(WD) # frame
FM.grid(row=0,column=0)

# LABELS
lblA = Label(FM, text="Image 1", font=("Arial Bold", 20))
lblB = Label(FM, text="Image 2", font=("Arial Bold", 20))
lblC = Label(FM, text="Image 3", font=("Arial Bold", 20))

# LABEL POSITIONS
lblA.grid(row=0, column=1)
lblB.grid(row=1, column=1)
lblC.grid(row=2, column=1)

# CHAPTER NUMBER INPUTS
#ch1 = ""
t1 = Text()
t2 = Text()
t3 = Text()
# t1.config(wrap=WORD)
# t2.config(wrap=WORD)
# t3.config(wrap=WORD)
#ch1_entry = Entry(FM, width=8, textvariable=ch1)
t1.grid(row=0, column=4)#, sticky=(S, W))
t2.grid(row=1, column=4)#, sticky=(S, W))
t3.grid(row=2, column=4)#, sticky=(S, W))

# BUTTONS
btnA1 = Button(FM, text ="Move Up")
btnA2 = Button(FM, text ="Move Down")
btnB1 = Button(FM, text ="Move Up")
btnB2 = Button(FM, text ="Move Down")
btnC1 = Button(FM, text ="Move Up")
btnC2 = Button(FM, text ="Move Down")

# BUTTON POSITIONS
btnA1.grid(row=0,column=2, sticky="n")
btnA2.grid(row=0,column=2, sticky="s")
btnB1.grid(row=1,column=2, sticky="n")
btnB2.grid(row=1,column=2, sticky="s")
btnC1.grid(row=2,column=2, sticky="n")
btnC2.grid(row=2,column=2, sticky="s")

# IMAGES
load1 = Image.open("parrot.jpg")
renderA = ImageTk.PhotoImage(load1)
renderB = ImageTk.PhotoImage(load1)
renderC = ImageTk.PhotoImage(load1)
imgA = Label(FM, image=renderA)
imgB = Label(FM, image=renderB)
imgC = Label(FM, image=renderC)

imgA.image = renderA
imgB.image = renderB
imgC.image = renderC

# IMAGE POSITIONS
imgA.grid(row=0, column=3)
imgB.grid(row=1, column=3)
imgC.grid(row=2, column=3)




#root = Tk()
#app = Window(root)
#root.wm_title("Tkinter window")
#root.geometry("400x120")
WD.mainloop()

【问题讨论】:

  • 您没有为Texts 指定父窗口小部件。它们是与您的图像和按钮完全不同的网格的一部分。

标签: python tkinter


【解决方案1】:

图像、按钮和标签是FM 的子级,但文本小部件是根的子级。如果您希望文本小部件与其他所有内容对齐,那么它们还需要是 FM 的子级

t1 = Text(FM)
t2 = Text(FM)
t3 = Text(FM)

如果你想让图片控制一行的高度,你可以给文本小部件的高度设置为 1,然后使用sticky 属性使其扩展以填充图片创建的高度。

t1 = Text(FM, height=1)
t2 = Text(FM, height=1)
t3 = Text(FM, height=1)
...
t1.grid(row=0, column=4, sticky="nsew")
t2.grid(row=1, column=4, sticky="nsew")
t3.grid(row=2, column=4, sticky="nsew")

【讨论】:

    猜你喜欢
    • 2015-09-17
    • 1970-01-01
    • 2019-03-08
    • 2021-05-02
    • 2013-02-07
    • 2020-03-11
    • 1970-01-01
    • 2020-11-08
    • 2012-08-20
    相关资源
    最近更新 更多