如何在 tkinter 中设置面板内标签的大小 - python

How to set the size of a label inside a panel in tkinter - python

我有三个问题!

问题 1: 我正在面板内创建一个标签,它的大小可以更改。我想保持它的固定。可能吗?

如果将光标移动到标签的上限和下限上,您会看到光标变为屏幕调整格式。

问题 2: 我的按钮占据了面板的整个尺寸。如何在不在下面创建空标签的情况下调整它的大小?

问题三:刻度也水平占据了整个面板。是否可以更改其大小?

from tkinter import*
import tkinter

root = Tk()
root.geometry('900x500')


var_a = DoubleVar()
var_b = DoubleVar()
    
############# CREATING PANELS #####################
#----------- General Panel  --------------#
panel_1 = PanedWindow(bd=4,orient = HORIZONTAL ,relief="raised")#, bg = "red")
panel_1.pack(fill=BOTH, expand=1)    
#----------- Fist Panel  --------------#
panel_3 = PanedWindow(panel_1, orient = VERTICAL, relief="raised")#, bg = "yellow")
panel_1.add(panel_3, minsize=200) #inserting on panel_1
#----------- Second Panel  --------------#
panel_2 = PanedWindow(panel_1, orient = VERTICAL, relief="raised")#, bg = "blue")
panel_1.add(panel_2, minsize=800) #inserting on panel_1
    

label2=Label(panel_3,text="Pass the cursor below me")
panel_3.add(label2)

textbox2=Scale(panel_3,orient=HORIZONTAL,variable = var_a)
panel_3.add(textbox2)

label4=Label(panel_3,text="Pass the cursor above me too")
panel_3.add(label4)

textbox4=Scale(panel_3,orient=HORIZONTAL,variable = var_b)
panel_3.add(textbox4)

def bla():
    pass
button1 = Button(panel_3,text="Why I have this size?", height = 1, width = 1, command= bla())
panel_3.add(button1)


tkinter.mainloop()

根据您的问题,很明显,当您在 panel 中添加 pack() 方法和 expand 参数时,所有小部件容器或面板都是根据它们的父容器展开,每个小部件根据容器适合。

根据我能够从您的问题中推断出的内容,您可以通过引用它仅适合按钮的水平方向并使用 pack() 参数添加 pack() 方法通过添加 expand=1 参数在面板中扩展小部件。

这是我所做的:

from tkinter import*
import tkinter

root = Tk()
root.geometry('900x500')


var_a = DoubleVar()
var_b = DoubleVar()
    
############# CREATING PANELS #####################
#----------- General Panel  --------------#
panel_1 = PanedWindow(bd=4,orient = HORIZONTAL ,relief="raised")#, bg = "red")
panel_1.pack(fill=BOTH, expand=1)    
#----------- Fist Panel  --------------#
panel_3 = PanedWindow(panel_1, orient = VERTICAL, relief="raised")#, bg = "yellow")
panel_1.add(panel_3, minsize=200) #inserting on panel_1
#----------- Second Panel  --------------#
panel_2 = PanedWindow(panel_1, orient = VERTICAL, relief="raised")#, bg = "blue")
panel_1.add(panel_2, minsize=800) #inserting on panel_1
 

label2=Label(panel_3,text="Pass the cursor below me")
panel_3.add(label2)

textbox2=Scale(panel_3,orient=HORIZONTAL,variable = var_a)
panel_3.add(textbox2)

label4=Label(panel_3,text="Pass the cursor above me too")
panel_3.add(label4)

textbox4=Scale(panel_3,orient=HORIZONTAL,variable = var_b)
panel_3.add(textbox4)



def bla():
    pass
button1 = Button(panel_3,text="Why I have this size?", height = 0, width = 0, command= bla())
panel_3.add(button1)
button1.pack(fill=X, expand=1) # Only fits in X (horizontal direction), expands according to the panel




tkinter.mainloop()

请注意,如果您想调整比例小部件的大小,您可以使用 widthheight 参数,但这仅适用于几何管理器,例如 place(),在这种情况下,您可以使用几何管理器 pack() 来根据面板保持关系和扩展,但是你不能改变它的宽度,因为作为一个控制和组织小部件的几何管理器你只能扩展和改变它的比例高度在这种情况下使用 width 来更改比例小部件的高度。

有关更多信息,请参阅有关 geometry manager pack()

的更多信息