如何确定标签在框架中的位置

2024-09-30 14:36:36 发布

您现在位置:Python中文网/ 问答频道 /正文

你知道吗 我怎样才能把这两个棕色的标签分别放在蓝框和绿框里?你知道吗

我可以把粉红色的标签放在黄色的框里,但另外两个棕色的标签不在我想放的位置。你知道吗

import tkinter as tk
window = tk.Tk()
window.title('frame test')
window.geometry('600x450')

label1 = tk.Label(window, text='In the left side of window', bg='red',
                  fg='white').pack(side='left')

frameShow = tk.Frame(window, bg='yellow', width=100,height=50)
frameShow.pack()

label2 = tk.Label(frameShow, text='In the left side of yellow frame',
                  bg='pink').pack(side='left')

subFramel = tk.Frame(frameShow, bg='green', width=200,height=200).pack()

label3 = tk.Label(subFramel, text='Inside the green frame',
                  bg='brown', fg='white').pack(side='right')

subFrame2 = tk.Frame(frameShow, bg='blue',
                     width=180,height=200).pack(side='left')

label3 = tk.Label(subFrame2, text='Inside the blue frame',
                  bg='brown', fg='white').pack()

window.mainloop()

Image


Tags: thetext标签windowleftframesidelabel
3条回答

你可以简单一些,使用:

label2.place(x = {positionInPixels), y = {positionInPixels))

试错法,但要简单得多。希望这有帮助!你知道吗

代码中的主要问题是您将变量设置为subFrame=tk.Frame(...).pack(),而它应该是subFrame=tk.Frame(...)。下面的代码应该可以工作。我包括borderwidth=2,这样您就可以看到框架颜色,因为框架会自动收缩到框架内容。你知道吗

import tkinter as tk
window = tk.Tk()
window.title('frame test')
window.geometry('600x450')

label1 = tk.Label(window, text='In the left side of window', bg='red', fg='white')
label1.pack(side='left')

frameShow = tk.Frame(window, bg='yellow', width=100,height=50)
frameShow.pack()

label2 = tk.Label(frameShow, text='In the left side of yellow frame', bg='pink')
label2.pack(side='left')

subFramel = tk.Frame(frameShow, bg='green', width=200,height=200, borderwidth=2)
subFramel.pack()

label3 = tk.Label(subFramel, text='Inside the green frame', bg='brown', fg='white')
label3.pack(side='right')

subFrame2 = tk.Frame(frameShow, bg='blue', width=180,height=200, borderwidth=2)
subFrame2.pack(side='left')

label3 = tk.Label(subFrame2, text='Inside the blue frame',bg='brown', fg='white', borderwidth=2)
label3.pack()

window.mainloop()

您可以使用.pack()而不是.grid()作为框架,我认为这样更容易使用。它基本上与pack相同,但是您可以指定您的帧在网格中的位置。您为每个帧指定列(^ {< CD3}}),并且每一个它应该占用多少个(^ {CD4}}为空白和黄色帧)。你知道吗

在此之后,您只需.pack("left")将标签放入所需的框架中。你知道吗

.pack_propagate(False)必须在帧上调用,以防止在放入标签时帧收缩。)

import tkinter as tk

window = tk.Tk()
window.title('Frame Test')
window.geometry('600x600')

blank_frame = tk.Frame(window, width=200,height=600)
blank_frame.pack_propagate(False) 
blank_frame.grid(column=0, row=0, rowspan=2)

yellow_frame = tk.Frame(window, bg='yellow', width=200,height=600)
yellow_frame.pack_propagate(False) # stops label shrinking when it gets a label in it
yellow_frame.grid(column=1, row=0, rowspan=2)

green_frame = tk.Frame(window, bg='green', width=200,height=300)
green_frame.pack_propagate(False)
green_frame.grid(column=2, row=0)

blue_frame = tk.Frame(window, bg='blue', width=200,height=300)
blue_frame.pack_propagate(False)
blue_frame.grid(column=2, row=1)


yellow_label = tk.Label(yellow_frame, text='In the left side of yellow frame',  bg='pink')
yellow_label.pack(side='left')

green_label = tk.Label(green_frame, text='Inside the green frame',  bg='brown')
green_label.pack(side='left')

green_label = tk.Label(blue_frame, text='Inside the blue frame',  bg='brown')
green_label.pack(side='left')

left_side_label = tk.Label(blank_frame, text='In the left side of the window',  bg='red')
left_side_label.pack(side='left')

window.mainloop()

相关问题 更多 >