-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathApostila-tkinter.txt
205 lines (141 loc) · 8.8 KB
/
Apostila-tkinter.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
Tkinter é uma interface grafica do Python.
O primeiro passo é importar a biblioteca: from tkinter import *
para iniciar uma janela basta criar uma instancia para relacionar a janela depois fechar o loop.
root = Tk()
mainloop()
O modulo tkinter é muito bem documentado todas as sintaxes podem ser encontradas em: https://effbot.org/tkinterbook/tkinter-index.htm
Tkinter == TK INTERFACE
Gui == Graphic User Inteface
widget #é todo componente que compoem uma interface.
Ex: Botoes , botoes com opçao, campos de texto.
Container # é todo componente que esta contido outro container.
window #Se refere a arear retangular que recebe um widgets
top-leve window #Janela independente, que se sobrepoem na janela principal.
frame #é a unidade basica de organizaçao de layout complexos.
child-parent #é o nome da relaçao entre Widget e seu container.
pilares
1 Gerenciamento de leyout
2 Widget (componentes da tela)
3 Eventos
Gerenciadores de layout Posiciona os WIDGETS em resoluçoes diferentes.
3 Gerenciadores
place # os widgets sao dispostos em coordenadas em x e y. Facil(antigo) https://effbot.org/tkinterbook/place.htm
pack # Empacota os widgets na horizontal ou verical. Nao usado https://effbot.org/tkinterbook/pack.htm
grid # os widgets sao inseridos num sistema de celulas de uma tabela. https://effbot.org/tkinterbook/grid.htm
Botão(Button) https://effbot.org/tkinterbook/button.htm
Um botão simples, usado para executar um comando ou outra operação.
Tela(Canvas) https://effbot.org/tkinterbook/canvas.htm
Gráficos estruturados. Este widget pode ser usado para desenhar gráficos e plotagens, criar editores gráficos e implementar widgets personalizados.
CheckButton(Checkbutton) https://effbot.org/tkinterbook/checkbutton.htm
Representa uma variável que pode ter dois valores distintos. Clicar no botão alterna entre os valores.
Entrada (Entry) https://effbot.org/tkinterbook/entry.htm
Um campo de entrada de texto.
Quadro (Frame) https://effbot.org/tkinterbook/frame.htm
Um widget de contêiner. O quadro pode ter uma borda e um plano de fundo e é usado para agrupar outros widgets ao criar um layout de aplicativo ou caixa de diálogo.
Rótulo (Label) https://effbot.org/tkinterbook/label.htm
Exibe um texto ou uma imagem.
Listbox https://effbot.org/tkinterbook/listbox.htm
Exibe uma lista de alternativas. A caixa de listagem pode ser configurada para obter o comportamento de lista de verificação ou RadioButton.
Menu https://effbot.org/tkinterbook/menu.htm
Um painel de menu. Usado para implementar menus suspensos e pop-up.
Menubutton https://effbot.org/tkinterbook/menubutton.htm
Um menubutton. Usado para implementar menus suspensos.
Mensagem(Message) https://effbot.org/tkinterbook/message.htm
Exibir um texto. Semelhante ao widget de rótulo, mas pode quebrar automaticamente o texto para uma determinada largura ou proporção.
Radiobutton
Representa um valor de uma variável que pode ter um dos muitos valores. Clicar no botão define a variável para esse valor e limpa todos os outros RadioButtons associados com a mesma variável.
Escala(Scale)
Permite que você defina um valor numérico arrastando um "slider".
Scrollbar(scrollbar)
Barras de rolagem padrão para uso com widgets de tela, entrada, caixa de listagem e texto.
Texto(Text)
Exibição de texto formatado. Permite que você exiba e edite texto com vários estilos e atributos. Também suporta imagens incorporadas e janelas.
Toplevel
Um widget de contêiner exibido como uma janela de nível superior separada.
No Python 2,3 (TK 8,4), os seguintes widgets foram adicionados:
Propriedade LabelFrame
Uma variante do widget de quadro que pode desenhar uma borda e um título.
Propriedade PanedWindow
Um widget de contêiner que organiza widgets filho em painéis redimensionáveis.
Campo incremental(Spinbox)
Uma variante do widget de entrada para selecionar valores de um intervalo ou um conjunto ordenado.
Observe também que não há nenhuma hierarquia de classe de widget em Tkinter; todas as classes de widgets são irmãos na árvore de herança.
Todos esses widgets fornecem os métodos de gerenciamento misc e Geometry, os métodos de gerenciamento de configuração e métodos adicionais definidos pelo próprio widget. Além disso, a classe TopLevel também fornece a interface do Gerenciador de janelas. Isso significa que uma classe de widget típica fornece alguns métodos de 150.
Mixins
O módulo Tkinter fornece classes correspondentes aos vários tipos de widget em TK, e um número de Mixin e outras classes auxiliares (um Mixin é uma classe projetada para ser combinada com outras classes usando herança múltipla). Quando você usa Tkinter, você nunca deve acessar as classes Mixin diretamente.
Mixins de implementação
A classe misc é usada como Mixin pela janela raiz e classes de widget. Ele fornece um grande número de TK e serviços relacionados janela, que estão, portanto, disponíveis para todos os widgets do núcleo Tkinter. Isto é feito por delegação; o widget simplesmente encaminha a solicitação para o objeto interno apropriado.
A classe WM é usada como Mixina pela janela raiz e classes de widget de TopLevel . Ele fornece serviços de Gerenciador de janelas, também por delegação.
Usar uma delegação como essa simplifica o código do aplicativo: depois de ter um widget, você pode acessar todas as partes do Tkinter usando métodos na instância do widget.
Mixins de geometria
As classes Grid, Packe Place são usadas como mixins pelas classes widget. Eles fornecem acesso aos vários gerenciadores de geometria, também através de delegação.
Grade (grid)
O Gerenciador de geometria de grade permite que você crie layouts de tabela, organizando os widgets em uma grade de 2 dimensões. Para usar esse Gerenciador de geometria, use o método Grid .
Pack
O Gerenciador de geometria de pacote permite que você crie um layout "empacotando" os widgets em um widget pai, tratando-os como blocos retangulares colocados em um quadro. Para usar esse Gerenciador de geometria para um widget, use o método Pack nesse widget para configurar as coisas.
Lugar (Place)
O Gerenciador de geometria local permite que você coloque explicitamente um widget em uma determinada posição. Para usar esse Gerenciador de geometria, use o método Place .
Gerenciamento de configuração de widgets
A classe widget mistura a classe misc com os mixins de geometria e adiciona o gerenciamento de configuração por meio dos métodos CGET e Configure , bem como através de uma interface de dicionário parcial. O último pode ser usado para definir e consultar opções individuais, e é explicado em mais detalhes no próximo capítulo.
Exemplos
root = Tk() #Principal
root.title('') #Renomeia a janela
root["bg"]ou["background"] = "green"
root.geometry("300x300+") #largura x Altura + lX + tY os valores sao em pixels.
root.mainloop() #Loop para manter a janela aberta e executando ate o usuario fechar.
#===========================================
place == Lugar #Plano cartesiano
janela = Tk()
lb = Label(janela, text="fala galera")
lb.place(x=250,y=250)
janela.geometry("500x500+1000+10")
mainloop()
#===========================================
bt = Button (container, width= , command= )
bt.place(x= , y= )
lb = Label (container, width=, height=, text=, font=)
lb.place(x= , y= )
def bt_click():
print('bt_click')
lb['text'] = 'Funcionou'
janela = Tk()
janela.title('Menu')
bt = Button(janela, width=20, text="ok", command=bt_click)
bt.place(x=100, y=150)
lb = Label(janela, text="Teste")
lb.place(x=150, y=100)
janela.geometry('300x300+1000+100')
janela.mainloop()
#===========================================
Exemplo com Retornando o Text do butao
from functools import partial #envia parametros
from tkinter import *
def butao_click(butao): #Recebe um parametro do partial
print(butao['text']) #butao['text'] significa que vai ler apenas o que esta dentro do texto.
janela = Tk()
janela.title('Janela principal')
bt = Button(janela, width=20, text='Confirmado')
bt['command'] = partial(butao_click, bt)
bt.place(x=100 , y=100)
bt2 = Button(janela, width=20, text='Negado')
bt2['command'] = partial(butao_click, bt2)
bt2.place(x=100 , y=130)
janela["background"] = "black"
janela.geometry("300x300")
#===========================================
from functools import partial
from tkinter import *
def bt_click():
print(input.get())
lb['text'] = input.get()
janela = Tk()
janela.title('interface')
janela.geometry('300x300+1000+100')
input = Entry(janela)
input.place(x=110, y=100)
lb = Label(janela, width=20 ,text=' ')
lb.place(x=100, y=80)
bt = Button(janela, width=20, text='Confirmar', command=bt_click)
bt.place(x=100, y=130)
janela.mainloop()
print('Janela finalizada')