我试图创建一个票(模拟tkinter),如果你刚刚付费进入达勒姆花园,它将模仿你将从票务机收到的票。逐行,它应该有一个欢迎消息,其次是入口的价格,然后是注册,最后是再见消息。如何使用tkinter网格方法将所有文本居中?
我遇到的问题是使所有的小部件(标签)居中,以便票看起来美观。
到目前为止,'注册'及其相应的价值水平对齐,'入场价格'及其相应的价值。这些东西彼此重叠。但是,我仍然无法找到维护后者的方法,同时仍然在中心保留欢迎信息和再见信息。因此,目前来看,欢迎词和再见消息远离其余价值的权利,尽管'进入价格'和'注册'水平地匹配它们的值,但是存在很大的他们之间的差距,我还没有找到办法摆脱。
from tkinter import *
TicketPrice = 25 # for the labelPrice below
WrittenPrice = "£ " + str(TicketPrice)
reg = "SMI" # for the labelREG below
root = Tk()
root.title("Your Ticket")
root.geometry("300x150")
labelWelcome = Label(root, text="The Durham Gardens")
labelBye = Label(root, text="Thank you for visiting. Enjoy!")
labelPrice = Label(root, text="Price of Entry") # no frame
labelREG = Label(root, text="Registration")
ActualPrice = Label(root, text=WrittenPrice) # get ticekt price
ActualREG = Label(root, text=str(reg))
root.grid_rowconfigure(0, minsize=20)
root.grid_rowconfigure(2, minsize=20)
root.grid_rowconfigure(6, minsize=20)
root.grid_columnconfigure(0, minsize=100)
labelPrice.grid(row=3, sticky=E)
labelREG.grid(row=5, sticky=E)
ActualPrice.grid(row=3, column=1)
ActualREG.grid(row=5, column=1)
labelWelcome.grid(row=1, column=1, ipadx=50, sticky=E) # column
labelBye.grid(row=7, column=1, ipadx=50, sticky=E)
root.mainloop()
我基本上是试图实现对Tkinter的一个类似的输出到你的壳得到什么,如果你遇到这样的:
print("*"*40)
print("*".ljust(39) + "*")
print("*".ljust(10) + "The Durham Gardens" + "*".rjust(12))
print("*".ljust(9) + "Price of Entry: £" +) + "*".rjust(12))
print("*".ljust(15) + "REG: " + str(reg) + "*".rjust(17))
print("*".ljust(39) + "*")
print("*".ljust(5) + "Thank you for visiting. Enjoy!" + "*".rjust(5))
print("*".ljust(39) + "*")
print("*"*40)
所以,如果你运行上面,那么这就是我的意思是当我说我想让一切看起来“中心化”。
我现在正在使用网格方法,因为它更容易将“注册”和“输入价格”标签与它们的值对齐。
所有的小部件都是标签,只包含文本。有没有办法把所有东西放在中心?
我还没有实际运行代码来验证这,但是你应该可以通过在中心标签中加入'columnspan = 2'(或者任何你使用的列的总数)来解决问题,并且从中删除'sticky ='选项(或者使用'sticky = W + E')。 – jasonharper
是否有任何理由不只是使用一个'Text'小部件并将所有文本正确对齐?你想要一些行有两列,而其他行有一列?在那种情况下,他们必须指定一个'columnspan'。 –
@ TadhgMcDonald-Jensen,不错,但使用Text小部件,用户可以用光标点击内容并编辑文本。我更喜欢标签,因为文本不能被编辑(这是我要买票的效果)。 –