我想有我的按钮和文字整齐地放在“登录”框区域的限制。“Login”框实际上是我用TKinter加载的背景PNG图像的一部分。我想把我的小部件很好地放在后台的登录框中。我当前正在使用grid(),但由于某些原因,它们没有与该登录框对齐。我如何调整我的代码,让登录框内的东西?你知道吗
def build_login_screen(root):
background_image = PhotoImage(file="./loginScreen.png", name="background_image")
background_label = Label(root, image=background_image, name="background_label")
background_label.place(x=0, y=0, relwidth=1, relheight=1)
background_label.image = background_image
login_button = Button(root, text="Login", name="login_button", command=lambda: login(root))
login_button.grid(row=5, column=1)
quit_button = Button(root, text="Quit", name="quit_button", command=root.destroy)
quit_button.grid(row=8, column=1)
server_select = Combobox(root, name='server_select')
server_select['values'] = (remote_server, local_server)
server_select.current(0)
server_select.grid(row=4, column=1)
server_select.bind("<<ComboboxSelected>>", clickServer)
label_server_status = Label(root, padx=50, text="Checking server status..", name="label_server_status")
label_server_status.grid(row=4, column=2)
label_server_status_value = Label(root, padx=50, text=server_availability, name="label_server_status_value")
label_server_status_value.grid(row=4, column=3)
由于您的界面包含具有固定大小的图像,最简单的解决方案是使用
place
几何图形管理器(而不是grid
管理器)定义按钮的位置,就像您定位图像所做的那样。简单地通过反复试验找到坐标,直到你得到视觉上令人愉悦的东西。你知道吗您仍然可以对其他小部件使用
grid
。。。你知道吗您可以使用
grid
几何管理器整齐地放置所有小部件。您还必须考虑使用以下选项提供一些填充,以使您的GUI看起来整洁和对齐。你知道吗我已经对你的一些代码行进行了注释,因为它们可能是在你的问题中没有包含的代码的其他部分中定义的。你知道吗
所以基本上我所做的更改是我只使用了
grid
系统。在root
窗口内设置标签background_label
,然后在background_label
内排列所有其他小部件,以便有一个层次结构root
(包含)background_label
(包含)Buttons, labels and other widgets
最后给每个小部件添加了一些填充。你知道吗
代码:
输出: 这就是运行上述代码时GUI的外观
您可以随意使用填充选项,并根据自己的要求进行设置。希望你能理解我的解释。你知道吗
我的建议是创建一个背景透明的框架。您可以放置此框架(使用“放置布局管理器”),使其正好位于中心的矩形上方。然后可以使用标准布局管理器将按钮添加到透明框架中。这种安排将更加灵活和易于理解。你知道吗
TkInter版本>;8.6支持具有透明背景的小部件,除非您的Python安装非常旧,否则这可能是您所拥有的。有关详细信息,请参见:Is there a way to create transparent windows with Tkinter?
相关问题 更多 >
编程相关推荐