python tkinter label靠左对齐_Python tkinter问题对齐

本文档介绍了一个使用Python tkinter创建的应用程序,开发者遇到了标签和输入框不对齐的问题。代码中展示了如何创建登录页面,但布局不是预期的左右对齐。为了解决这个问题,标签和输入框需要设置grid方法的sticky参数为"W",以实现左对齐。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我正在创建一个应用程序来尝试和学习python和tkinter。我遇到的问题是我似乎无法像我想要的那样对齐条目和标签。我想这样来安排它们:Python tkinter问题对齐

labelUsername entryUsername

labelPassword entryPassword

但是,它目前是这样的:

labelUsername

entryUsername

labelPassword

entryPassword

这里是我的代码:

import tkinter as tk

from tkinter import ttk

TITLE_FONT = ("Verdana", 12)

NORMAL_FONT = ("Verdana", 8)

class CCTV(tk.Tk):

def __init__(self, *args, **kwargs):

tk.Tk.__init__(self, *args, **kwargs)

container = tk.Frame(self)

container.pack()

container.grid_rowconfigure(0, weight=1)

container.grid_columnconfigure(0, weight=1)

self.frames = {}

for F in (LoginPage, PageOne):

frame = F(container, self)

self.frames[F] = frame

frame.grid(column=0, row=0, sticky="nsew")

self.show_frame(LoginPage)

def show_frame(self, cont):

frame = self.frames[cont]

frame.tkraise()

class LoginPage(tk.Frame):

def __init__(self, parent, controller):

tk.Frame.__init__(self, parent)

label = ttk.Label(self, text="Login Page", font=TITLE_FONT)

label.pack(padx=20, pady=20)

labelUsername = ttk.Label(self, text="Username", font=NORMAL_FONT)

labelUsername.grid(row=0, sticky="w")

labelUsername.pack()

entryUsername = ttk.Entry(self, font=NORMAL_FONT)

entryUsername.grid(column=1, row=0)

entryUsername.pack()

labelPassword = ttk.Label(self, text="Password", font=NORMAL_FONT)

labelPassword.grid(row=1, sticky="w")

labelPassword.pack()

entryPassword = ttk.Entry(self, show = "*", font=NORMAL_FONT)

entryPassword.grid(column=1, row=1)

entryPassword.pack()

loginButton = ttk.Button(self, text="Login", command=lambda: controller.show_frame(PageOne))

loginButton.grid()

loginButton.pack()

class PageOne(tk.Frame):

def __init__(self, parent, controller):

tk.Frame.__init__(self, parent)

label = tk.Label(self, text="Page One", font=TITLE_FONT)

label.pack(padx=20, pady=20)

button1 = tk.Button(self, text="Back to home", command=lambda: controller.show_frame(LoginPage))

button1.pack()

app = CCTV()

app.geometry("800x600")

app.mainloop()

如果你想知道为什么我有这么简单的程序有很多代码,所以我可以改变正在查看的框架,这样我就可以创建多个框架而不需要创建新的窗口。 任何帮助将不胜感激。

2016-09-20

Conor

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值