【问题标题】:Python tkinter labels become uncentered after adding another label添加另一个标签后,Python tkinter 标签变得不居中
【发布时间】:2020-11-06 09:45:59
【问题描述】:

作为这个问题的前言,我之前尝试过搜索该问题,但无济于事。

我正在尝试制作一个小型登录系统 - 使用 SQL 的后端工作正常,尽管前端没有按预期工作。我的初始代码没有问题,一切都居中;在我只添加了一个标签之后,中心就无缘无故地消失了。

这是代码(如果有任何遗漏,请告诉我):

def main_window(): #actual login window

    #define constants start

    global root
    root = Tk()
    root.title("Hockey Login System")
    width = 800
    height = 500
    screen_width = root.winfo_screenwidth()
    screen_height = root.winfo_screenheight()
    x = (screen_width/2) - (width/2)
    y = (screen_height/2) - (height/2)
    root.geometry("%dx%d+%d+%d" % (width, height, x, y))
    root.resizable(0, 0)
#alignment related constants

    title_frame = Frame(root, bd=2,  relief=RIDGE)
    title_frame.pack(side=TOP, fill=X)
    Form = Frame(root, height=500)
    Form.pack(side=TOP, pady=20)

    #define constants finish

    #login labels placement start

    label_title = Label(title_frame, text="Please log in in order to access Hockey.", font=('arial', 15))
    label_title.pack(fill=X)
    label_username = Label(Form, text="Username", font=('arial', 14), bd=15)
    label_username.grid(row=0, sticky="e")
    label_password = Label(Form, text="Password", font=('arial', 14), bd=15)
    label_password.grid(row=1, sticky="e")
    global label_text
    label_text = Label(Form)
    label_text.grid(row=2, columnspan=2)

    #login labels placement finish

    #entry boxes start

    username = Entry(Form, textvariable=USERNAME, font=(14))
    username.grid(row=0, column=1)
    password = Entry(Form, textvariable=PASSWORD, show="*", font=(14))
    password.grid(row=1, column=1)

    #entry boxes finish


    #login & register buttons start

    btn_login = Button(Form, text="Login(will start game if successful)", width=45, command=Login)
    btn_login.grid(pady=25, row=3, columnspan=2)
    btn_login.bind('<Return>', Login)

    btn_register = Button(Form, text="Register with inserted credentials", width=45, command=Register)
    btn_register.grid(pady=25, row=4, columnspan=2)
    btn_register.bind('<Return>', Login)

    #login & register buttons finish

    #copyright/credits start

    label_creation = Label(Form, text="Created using Python, tkinter and SQLite3", font=('arial', 12), bd=15)
    label_creation.grid(pady=25, row=5, sticky="e")

    #copyright/credits finish


    root.mainloop()     #runs window

有问题的行是代码末尾附近的 label_creation 变量。代码是这样的:

没有 label_creation:(centered)

使用 label_creation:not centered

总而言之,我一直在尝试使所有内容都居中,但失败了,包括由于同时执行 .grid() 和 .pack() 而导致的大量错误。

提前致谢!

【问题讨论】:

  • 请提供一个最小的工作示例供我们尝试

标签: python tkinter


【解决方案1】:

您错过了为最后一个标签定义 columnspan 参数,因此它尝试将整个文本放入第一列中,结果将其加宽。

label_creation = Label(Form, text="Created using Python, tkinter and SQLite3", font=('arial', 12), bd=15)
label_creation.grid(pady=25, row=5, columnspan=2, sticky="e")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多