-
Notifications
You must be signed in to change notification settings - Fork 0
/
Tkinter.txt
203 lines (118 loc) · 5.35 KB
/
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
Tkinter
- Devemos importar a bibilioteca tkinter que já vem com o python
- Para a criação de uma janela devemos criar uma instancia da classe ".Tk()"
Ex:
import tkinter
janela = tkinter.Tk()
- O método ".mainloop()" cria uma repetição infinita que será mantida até que a janela seja fechada
- O método ".title()" dá o nome do título da janela
- Podemos mudara a cor de fundo da janela mudando a chave "bg" de janela (que pode ser visto como um di-
cionário)
Ex:
janela["bg"] = "blue"
obs: "bg" = background
- O método ".geometry()" define em pixels o tamanho da jalena por meio da largura e altura e também o
posicionamento de abertura da janela começando pelo posicionamento da esqueda da tela e depois pelo
pocisionamento a partir do topo da tela
Ex:
LxA+E+T
janela.geometry("300x300+100+100")
- Os tres pilares do estudo de interface gráfica são:
1) Gerenciamento de leiaute
2) Widget (componentes da tela)
3) Eventos
Gerenciador de leiaute
- Um gerenciador de leiaute define a organização dos widgets dentro de um container
- A bibilioteca Tkinter proporciona 3 gerenciadores de leiaute sendo eles:
Place (menos usado) - os widgets são dispostos conforme suas cordenadas x e y
Pack - empacota os widgets na horizontal ou vertical
Grid - os widgets são inseridos num sistema de células de uma tabela
- O gerenciador "place" vai posicionar um "Label" de acordo com pontos cartesianos x e y sendo eles o
posicionamento equivalente ao quarto quadrante, ou seja, o ponto (0,0) seria o canto superior esquerdo
do monitor
- Label é utilizado para escrever uma mensagem na tela, deve ser colocado dentro de um container.
- Toda vez que um widget for criado esse mesmo deve ser colocado dentro de um container
EX:. Utilização do place
from tkinter import *
janela = Tk()
lb = Label(janela, text="Fala Galera!!")
lb.place(x=100, y=100)
janela.geometry("300x300+200+200")
janela.mainloop()
- Para criar um botão devemos criar uma variável que irá conter uma instância de "Button". A instância
de "Button" deve receber como parâmetros o container na qual ele vai estar, a largura do botão "width",
o texto do botão "text" e a função que irá chamar quando o botão for pressionado por meio do parâmetro
"command".
Exemplo de criação de botão:
from tkinter import *
def bt_click():
print("bt_click")
lb["text"] = "Funcionou!!"
janela = Tk()
bt = Button(janela, width=20, text="OK", command=bt_click )
bt.place(x=100, y=100)
lb= Label(janela, text="Teste")
lb.place(x=100, y=150)
janela.geometry("300x300+200+200")
janela.mainloop()
- Podemos criar uma função genérica para servir a mais de um botão ao mesmo tempo, como não podemos
passar o botão como parâmetro da função em "command" teremos que utilizar uma função que reescreva a
função genérica passando a ela o parâmetro que desejamos. Essa função é a "partial" do método "functools"
Ex: Função genérica
from tkinter import *
from functools import partial
def bt_click(botao):
print(botao["text"])
janela = Tk()
bt1 = Button(janela, width=20, text="Butão1")
bt1["command"] = partial(bt_click, bt1)
bt1.place(x=100, y=100)
bt2 = Button(janela, width=20, text="Butão2")
bt2["command"] = partial(bt_click, bt2)
bt2.place(x=100, y=130)
janela.geometry("300x300+200+200")
janela.mainloop()
- A instância "Entry" cria uma caixa de entrada, uma forma tradicional de se obter dados do usuário.
- A função "get" vai retornar o valor digitado no campo
Ex: Utilização do Entry
from tkinter import *
def bt_onclick():
print(ed.get())
lb["text"] = ed.get()
janela = Tk()
janela["bg"] = "Blue"
ed = Entry(janela)
ed.place(x=100, y=100)
bt = Button(janela, width=20, text="OK", command= bt_onclick )
bt.place(x=100, y=130)
lb = Label(janela, text="Label")
lb.place(x=100,y=160)
janela.geometry("300x300+300+300")
janela.mainloop()
- O Gerenciador de Leiaute Pack tem por objetivo empacotar os widgtes em uma determinada direção, sendo
ela horizontal ou vertical, onde a ordem de entrada definirá a posição em que o mesmo será exibido.
- A prorpiedade "side" definimos qual o lado em que queremos posicionar o nosso componente tendo por pa-
drão a prorpiedade top. A propriedade "side" vincula uma extremidade a um componente.
Ex: Utilização de gerenciador Pack
from tkinter import *
janela = Tk()
lb1 = Label(janela, text= "label 1", bg= "blue")
lb2 = Label(janela, text= "label 2", bg= "yellow")
lb3 = Label(janela, text= "label 3", bg="red")
lb4 = Label(janela, text= "label 4", bg="brown")
lb1.pack(side=TOP)
lb2.pack(side=LEFT)
lb3.pack(side=RIGHT)
lb4.pack(side=BOTTOM)
janela.geometry("400x400+200+200")
janela.mainloop()
- A propriedade "anchor" vincula um sentido a um componente. Pode haver confusão ao usar "side" e "an-
chor" ao mesmo tempo, a propriedade "side" sempre tem prescendência a "anchor".
- A propriedade "fill" expande o widget na extremidade definida com a propriedade "side"
- A propriedade "expand" vai definir que todos os widgets tenham o mesmo tamanho num determinado sentido
- Gerenciador de leiaute Grid nos permite manipular a interface gráfica utilizando um sistema de linhas
e colunas
- As prorpiedades "row" e "column" definem a linha e a coluna dos componentes dentro de células.
- A prorpiedade "sticky" nos permite definir o sentido que um componente vai ter dentro de uma celula
- As propriedades "rowspan" e "columnspan" definem a quantidade de linhas e colunas que devem ser
mescladas