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

时间:2021-03-09 02:06:38

标签: python tkinter label panel tkinter-scale

我有三个问题!

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

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

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

问题 3: 天平还水平占据整个面板。是否可以更改其大小?

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()

1 个答案:

答案 0 :(得分:1)

根据您的问题,很明显,当您在 pack() 中添加 expand 方法和 panel 参数时,所有小部件容器或面板都会根据到它们的父容器,每个小部件都根据容器进行调整。

从我能够从你的问题中推断出你可以做的是添加带有 pack() 参数的 fill=X 方法,通过引用它只适合按钮的水平方向并使用小部件通过添加 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() 根据面板维护关系和扩展,但是您不能更改其宽度,因为作为控制和组织小部件的几何管理器,您只能使用 in 扩展和更改比例的高度在这种情况下 width 更改缩放小部件的高度。

有关详细信息,请参阅有关 geometry manager pack()

的更多信息
相关问题