Python tkinter--Capítulo 17 Método PanedWindow

17.2 Métodos

método descrever
add(filho, **opções) Adicione subcomponentes.
child:
opções de identificação do componente filho: método para adicionar componentes filho. Veja a tabela abaixo
config() Atende a descrição do imóvel.
esquecer (criança)
remover(criança) Excluir uma janela filha.
Criança ID da janela filha
identificar(x, y) Dada uma coordenada (x, y), retorna o nome do elemento naquela coordenada
Se a coordenada estiver em um componente filho, retorna uma string vazia
Se a coordenada estiver em uma linha dividida, retorna uma tupla de 2 (n, 'sash '), Se n for 0, significa a primeira linha divisória.
Se a coordenada estiver no identificador, retorne uma tupla 2 (n, 'identificador') e n é 0, o que significa o primeiro identificador
panecget(filho, opção) Obter o valor da subjanela opcional
paneconfig(filho, **opções)
painelconfigure(filho, **opções)
Defina as propriedades da janela filho. Para a definição de atributos específicos, participe da função add(child, **options)
painéis () lista de subjanelas de retorno
proxy_coord() Obter as coordenadas do agente
proxy_forget() excluir agente
proxy_place(x, y) coloque um agente nas coordenadas (x,y)
faixa_coord(índice) Obtenha as coordenadas de posição da linha divisória especificada pelo índice
sash_mark(índice, x, y) Registre a posição do mouse em (x,y).
sash_place(índice, x, y) Mova a linha divisória para a posição especificada pelas coordenadas (x,y).

Adicionar método de subcomponente

método ilustrar
depois Adiciona um novo subcomponente após o subcomponente especificado
antes Adiciona um novo subcomponente antes do subcomponente especificado
altura Especifica a altura do componente filho
tamanho mínimo Esta opção controla o valor que o painel não deve ser inferior.
Se orient=HORIZONTAL, a largura do painel não deve ser inferior ao valor desta opção.
Se orient=VERTICAL, a altura do painel não deve ser inferior a o valor desta opção.
Padx Especifica o espaçamento horizontal dos componentes filho
Arroz Especifica o espaçamento vertical dos componentes filho
pegajoso Quando o tamanho do painel é maior que o do subcomponente, esta opção especifica a posição do subcomponente no painel. Os
valores opcionais são: E, S, W, N (sul, leste, oeste, norte) e seus valores combinados
largura Especifica a largura do componente filho
17.2.1 add(criança, kw)
Adicione subcomponentes. Depois que o painel definir o estilo e o tamanho da partição, use o método add() para adicionar os componentes específicos em cada subpainel. Os parâmetros para adicionar subcomponentes são:
(1)Depois
Adicione após o controle filho especificado por after. por exemplo:
direita=tk.Label(pane,text='direita')
left=tk.Label(pane,text='left')
pane.add(direita,depois=esquerda)
Essa instrução significa que o subcontrole direito é adicionado após o subcontrole esquerdo. Se os painéis estiverem organizados horizontalmente, o controle direito estará à direita do controle esquerdo.
(2) antes
Adicione antes do controle filho especificado por antes. por exemplo:
direita=tk.Label(pane,text='direita')
left=tk.Label(pane,text='left')
pane.add(direita,antes=esquerda)
Também é um painel distribuído horizontalmente. Neste momento, o controle direito está no lado esquerdo do controle esquerdo. Porque é especificado que o controle direito é inserido no painel antes do controle esquerdo.
(3) altura
Define a altura do controle filho. Então, alguns subcontroles têm uma altura, como Texto, etc., qual deve prevalecer? A resposta é que a altura do controle é maior que isso. Em outras palavras, se a altura do subcontrole Text for maior que a altura especificada por height, Text será usado. Se o valor da altura for grande (se as unidades forem inconsistentes, será convertido para o valor da altura da mesma unidade para comparação), use o valor definido por altura.
(4) tamanho mínimo
Especifica o valor numérico para o menor painel. A configuração do painel não será menor que esse valor.
import tkinter as tk
from tkinter import ttk

root=tk.Tk()
root.geometry('320x240')
b1=tk.PanedWindow(showhandle=True,
                  sashrelief=tk.SUNKEN,
                  width=240,sashwidth=20)
left=tk.Text(b1,height=5,width=5,bg='red')
b1.add(left,minsize=140)
right=tk.Text(b1,height=5,width=5)
b1.add(right)
b1.pack()
root.mainloop()

结果:
在这里插入图片描述
在这里插入图片描述
图一是没有使用minsize参数的情况,图二是使用了minsize的情况,可以看见是有不同的。right子控件使用了minsize之后,由于要保证最小的宽度是150个像素,明显比没有使用的时候要宽了。对于水平分布的窗格,minsize是指的宽度,而对于垂直分隔的窗格,minsize指的是高度。使用的时候要注意区分窗格的分布。
(5)padx
设置水平方向上的子控件的内边距值。

import tkinter as tk
from tkinter import ttk
root=tk.Tk()
root.geometry('320x240')
b1=tk.PanedWindow(showhandle=True,
                  sashrelief=tk.SUNKEN,width=240,
                  sashwidth=20,bg='blue')
left=tk.Text(b1,height=5,width=5)
b1.add(left,minsize=40)
right=tk.Text(b1,height=5,width=5,bg='red')
b1.add(right,padx=10)
b1.pack()
root.mainloop()

结果:
在这里插入图片描述
说明:padx=10,可以发现在右侧的子控件的两边有蓝色的边,而左侧的子控件没有使用padx,就没有明显的蓝色的边。
(6)pady
垂直方向的内边距值。用法参见padx。
(7)sticky
sticky的用法与grid布局管理器的用法是一致的。如果子控件比窗格要小的话,就可以使用sticky来放置子控件到相应的方位上。具体的用法参见第三章的grid布局管理器。
(8)width
定义子控件的宽度。与height用法类似。
17.2.2 config()
动态改变窗格的属性。属性见17.1节的定义。
17.2.3 forget(child) 和remove(child)
移除一个窗格。

import tkinter as tk
from tkinter import ttk
root=tk.Tk()
root.geometry('320x240')
b1=tk.PanedWindow(showhandle=True,
                  sashrelief=tk.SUNKEN,
                  width=240,sashwidth=20,bg='blue')
left=tk.Text(b1,height=5,width=5)
b1.add(left,minsize=40)
right=tk.Text(b1,height=5,width=5,bg='red')
b1.add(right,padx=10)
b1.pack()
def remove():
    b1.remove(right)
b2=tk.Button(root,text='移除窗格',command=remove)
b2.pack()
root.mainloop()

结果:
在这里插入图片描述
在这里插入图片描述
17.2.4 identify(x, y)
返回给定坐标点的处于什么窗格的部件上:
(1)空字符串
表示位于子控件上
(2)(n,‘sash’)
表示位于分隔条上。n表示第几个分隔条,从0开始计数。
(3)(n,’handle’)
表示位于手柄上。n表示第几个手柄,从0开始计数

import tkinter as tk
from tkinter import ttk

root=tk.Tk()
root.geometry('320x240')
b1=tk.PanedWindow(showhandle=True,
                  sashrelief=tk.SUNKEN,
                  sashwidth=90,width=240,bg='blue')
left=tk.Text(b1,height=5,width=5)
b1.add(left,minsize=40)
right=tk.Text(b1,height=5,width=5,bg='red')
b1.add(right,padx=10)
b1.pack()
b3=tk.Label(root)
b4=tk.Entry(root,width=5)
b5=tk.Entry(root,width=5)

def identify():
    r=b1.identify(b4.get(),b5.get())
    if r == '':
        b3['text']='子控件'
    else:
        b3['text']=str(r)
    
b2=tk.Button(root,text='identify',command=identify)
b2.pack()
b4.pack(side='left')
b5.pack(side='right')
b3.pack()
def b(event):
    print(event)

root.bind('<Button-1>',b)
root.mainloop()

结果:
在这里插入图片描述
说明:先点中分隔条,根据在命令行窗口得到的鼠标位置,把x坐标值输入左边的输入框,y坐标值输入右边的输入框,点击按钮后,就可以得到相应的结果了。手柄和子控件同样的方法。
17.2.5 panecget(child, option)
获取子窗格的属性,属性的定义在17.2.1中已经详细介绍了。

import tkinter as tk
from tkinter import ttk
root=tk.Tk()
root.geometry('320x240')
b1=tk.PanedWindow(showhandle=True,
                  sashrelief=tk.SUNKEN,
                  sashwidth=1,width=240,bg='blue')
left=tk.Text(b1,height=5,width=5)
b1.add(left,minsize=40)
right=tk.Text(b1,height=5,width=5,bg='red')
b1.add(right,padx=10,before=left)
b1.pack()
b3=tk.Label(root)
b4=tk.Entry(root)

def cget():
    b3['text']=b1.panecget(right,b4.get())
    
b2=tk.Button(root,text='cget',command=cget)
b2.pack()
b4.pack()
b3.pack()
root.mainloop()

结果:
在这里插入图片描述
17.2.6 paneconfigure(child, **options)和paneconfig(child, **options)

import tkinter as tk
from tkinter import ttk
root=tk.Tk()
root.geometry('320x240')
b1=tk.PanedWindow(showhandle=True,
                  sashrelief=tk.SUNKEN,sashwidth=1,
                  width=240,bg='blue')
left=tk.Text(b1,height=5,width=5)
b1.add(left,minsize=40)
right=tk.Text(b1,height=5,width=5,bg='red')
b1.add(right,padx=10,before=left)
b1.pack()
b3=tk.Label(root)
b4=tk.Entry(root,width=10)
b5=tk.Entry(root,width=10)
def config():
    key={}
    key[b4.get()]=b5.get()
    b3['text']=b1.paneconfig(right,key)
    
b2=tk.Button(root,text='PaneConfig',command=config)
b2.pack()
b4.pack(side='left')
b5.pack(side='left')
b3.pack()
root.mainloop()

结果:
在这里插入图片描述
在这里插入图片描述
动态调整子窗格的属性。

17.2.7 panes()
返回子窗口列表。

import tkinter as tk
from tkinter import ttk
root=tk.Tk()
root.geometry('320x240')
b1=tk.PanedWindow(showhandle=True,
                  sashrelief=tk.SUNKEN,
                  sashwidth=1,width=240,bg='blue')
left=tk.Text(b1,height=5,width=5)
b1.add(left,minsize=40)
right=tk.Text(b1,height=5,width=5,bg='red')
b1.add(right,padx=10,before=left)
b1.pack()
b3=tk.Label(root)
def panes():
    b3['text']=b1.panes()
    
b2=tk.Button(root,text='Panes',command=panes)
b2.pack()
b3.pack()
root.mainloop()

结果:
在这里插入图片描述
17.2.8 sash_coord(index)
获得分隔线的坐标。index的值是0,因为一个窗格实例,只有一个分隔线。

import tkinter as tk
from tkinter import ttk

root=tk.Tk()
root.geometry('320x240')
b1=tk.PanedWindow(showhandle=True,
                  sashrelief=tk.SUNKEN,
                  sashwidth=1,width=240,bg='blue')
left=tk.Text(b1,height=5,width=5)
b1.add(left,minsize=40)
right=tk.Label(b1,text='实验室')
b1.add(right)
b1.pack()
b3=tk.Label(root,text=str(b1.sash_coord(0)))
b3.pack()
root.mainloop()

结果:
在这里插入图片描述
17.2.9 sash_mark(index)
返回鼠标上次拖拽分隔线的坐标。

import tkinter as tk
from tkinter import ttk

root=tk.Tk()
root.geometry('320x240')
b1=tk.PanedWindow(showhandle=True,
                  sashrelief=tk.SUNKEN,
                  sashwidth=1,width=240,bg='blue')
left=tk.Text(b1,height=5,width=5)
b1.add(left,minsize=40)
right=tk.Label(b1,text='实验室')
b1.add(right)
b1.pack()
def mark():
    right['text']=str(b1.sash_mark(0))
b3=tk.Button(root,text='mark',command=mark)
b3.pack()
root.mainloop()

结果:
在这里插入图片描述
17.2.10 sash_place(index,x,y)
移动分隔到指定的位置(x,y)处。

import tkinter as tk
from tkinter import ttk

root=tk.Tk()
root.geometry('320x240')
b1=tk.PanedWindow(showhandle=True,
                  sashrelief=tk.SUNKEN,
                  sashwidth=1,width=240,bg='blue')
left=tk.Text(b1,height=5,width=5)
b1.add(left,minsize=40)
right=tk.Label(b1,text='实验室')
b1.add(right)
b1.pack()
b4=tk.Entry(root)
def place():
    (x,y)=b4.get().split(',')
    b1.sash_place(0,x,y)
b3=tk.Button(root,text='Place',command=place)
b3.pack()
b4.pack()
root.mainloop()

结果:
在这里插入图片描述

Acho que você gosta

Origin blog.csdn.net/weixin_42272768/article/details/100809452
Recomendado
Clasificación