# Usando Tkinker (Pedindo de senha e dois separadores )
import tkinter as tk
from tkinter import messagebox
from tkinter import IntVar
class LoginForm:
def __init__(self, master):
self.master = master
self.master.title("Introduzir palavra passe")
self.password_label = tk.Label(self.master, text="Senha")
self.password_label.pack()
self.password_entry = tk.Entry(self.master, show="*")
self.password_entry.pack()
# Criar botão de login
self.login_button = tk.Button(self.master, text="Entrar", command=self.login)
self.login_button.pack() def login(self):
password = self.password_entry.get()
if password == "1234":
self.master.withdraw() # Oculta a janela de login
self.open_new_window()
else:
messagebox.showerror("Introdução de senha", "Senha incorreta.") def open_new_window(self):
self.new_window = tk.Toplevel(self.master)
self.app = NewWindow(self.new_window) class NewWindow:
def __init__(self, master):
self.master = master
self.master.geometry("400x450")
self.master.resizable(0, 0)
self.master.config(bg="#343deb")
self.master.title("Terminal de ATM") def verificar_saldo():
messagebox.showinfo("Saldo", f"Seu saldo atual é: {saldo:.2f} €") def comando_levantamento():
global saldo
valor = int(levantamento.get())
if valor <= saldo:
saldo -= valor
messagebox.showinfo("Levantamento", f"Levantamento: {valor:.2f} €\nSaldo atual: {saldo:.2f} €")
else:
messagebox.showerror("Levantamento", "Saldo insuficiente") def comando_deposito():
global saldo
valor1 = int(deposito.get())
saldo += valor1
messagebox.showinfo("Depósito", f"Depósito: {valor1:.2f} €\nSaldo atual: {saldo:.2f} €") def limpar():
levantamento.set(0)
deposito.set(0) self.titulo = tk.Label(
self.master,
text="ATM",
font=("Arial", "25", "bold"),
bg="#343deb",
fg="#bcebbd"
)
self.titulo.place(relx=0.38, rely=0.05) self.texto_sub1 = tk.Label(
self.master,
text="Saldo disponível",
font=("Arial", "15", "bold"),
bg="#343deb",
fg="#bcebbd"
)
self.texto_sub1.place(relx=0.3, rely=0.15) self.texto_sub2 = tk.Label(
self.master,
text="Valor do levantamento",
font=("Arial", "15", "bold"),
bg="#343deb",
fg="#bcebbd"
)
self.texto_sub2.place(relx=0.25, rely=0.35) self.texto_sub3 = tk.Label(
self.master,
text="Valor do depósito",
font=("Arial", "15", "bold"),
bg="#343deb",
fg="#bcebbd"
)
self.texto_sub3.place(relx=0.28, rely=0.68) levantamento = IntVar()
self.levantamento_entrada = tk.Entry(
self.master,
textvariable=levantamento,
font=("Arial", "12", "bold"),
bg="white",
fg="blue",
justify='center'
)
self.levantamento_entrada.place(relx=0.2, rely=0.45, relwidth=0.65) deposito = IntVar()
self.deposito_entrada = tk.Entry(
self.master,
textvariable=deposito,
font=("Arial", "12", "bold"),
bg="white",
fg="blue",
justify='center'
)
self.deposito_entrada.place(relx=0.2, rely=0.75, relwidth=0.65) self.but1 = tk.Button(
self.master,
text="Verificar Saldo",
bd=2,
bg='#107db2',
fg='white',
font=('verdana', 12, 'bold'),
command=verificar_saldo
)
self.but1.place(relx=0.25, rely=0.23, relwidth=0.5, relheight=0.08) self.but2 = tk.Button(
self.master,
text="Levantamento",
bd=2,
bg='#107db2',
fg='white',
font=('verdana', 12, 'bold'),
command=comando_levantamento
)
self.but2.place(relx=0.25, rely=0.55, relwidth=0.5, relheight=0.08) self.but3 = tk.Button(
self.master,
text="Depósito",
bd=2,
bg='#107db2',
fg='white',
font=('verdana', 12, 'bold'),
command=comando_deposito
)
self.but3.place(relx=0.25, rely=0.85, relwidth=0.5, relheight=0.08) self.but_limpar = tk.Button(
self.master,
text="Limpar",
bd=2,
bg='#107db2',
fg='white',
font=('verdana', 12, 'bold'),
command=limpar
)
self.but_limpar.place(relx=0.8, rely=0.9, relwidth=0.2, relheight=0.1) saldo = 1000
# Criar a janela principal
root = tk.Tk()
app = LoginForm(root) # Iniciar o loop principal
root.mainloop()
# Usando Tkinker (simples)
from tkinter import *
from tkinter import messagebox
saldo = 1000
root = Tk()
root.geometry("400x450")
root.resizable(0, 0)
root.config(bg="#343deb")
root.title("Terminal de ATM")
def verificar_saldo():
messagebox.showinfo("Saldo", f"Seu saldo actual é: {saldo:.2f} € ") def comando_levantamento():
global saldo
valor = int(levantamento.get())
if valor <= saldo:
saldo -= valor
messagebox.showinfo("Levantamento", f"Levantamento: {valor:.2f} €\nSaldo actual: {saldo:.2f} €")
else:
messagebox.showerror("Levantamento", "Saldo insuficiente") def comando_deposito():
global saldo
valor1 = deposito.get()
saldo += valor1
messagebox.showinfo("Depósito", f"Depósito: {valor1:.2f} €\nSaldo actual: {saldo:.2f} €") def limpar():
levantamento_entrada.delete(0, END)
deposito_entrada.delete(0, END)
titulo = Label(text="ATM",
font=("Arial", "25", "bold"),bg="#343deb",fg="#bcebbd")
titulo.place(relx=0.38, rely=0.05)
texto_sub1 = Label(text="Saldo disponível",
font=("Arial", "15", "bold"),bg="#343deb",fg="#bcebbd")
texto_sub1.place(relx=0.3, rely=0.15) texto_sub2 = Label(text="Valor do levantamento",
font=("Arial", "15", "bold"),bg="#343deb",fg="#bcebbd")
texto_sub2.place(relx=0.25, rely=0.35) texto_sub3 = Label(text="Valor do depósito",
font=("Arial", "15", "bold"),bg="#343deb",fg="#bcebbd")
texto_sub3.place(relx=0.28, rely=0.68) levantamento = IntVar()
levantamento_entrada = Entry(textvariable=levantamento,
font=("Arial", "12", "bold"),
bg="white", fg="blue", justify='center')
levantamento_entrada.place(relx=0.2, rely=0.45, relwidth=0.65) deposito = IntVar()
deposito_entrada = Entry(textvariable=deposito,
font=("Arial", "12", "bold"),
bg="white", fg="blue", justify='center')
deposito_entrada.place(relx=0.2, rely=0.75, relwidth=0.65) but1 = Button(text="Verificar Saldo", bd=2, bg='#107db2', fg='white',
font=('verdana', 12, 'bold'), command=verificar_saldo)
but1.place(relx=0.25, rely=0.23, relwidth=0.5, relheight=0.08)
but2 = Button(text="Levantamento", bd=2, bg='#107db2', fg='white',
font=('verdana', 12, 'bold'), command=comando_levantamento)
but2.place(relx=0.25, rely=0.55, relwidth=0.5, relheight=0.08) but3 = Button(text="Depósito", bd=2, bg='#107db2', fg='white',
font=('verdana', 12, 'bold'), command=comando_deposito)
but3.place(relx=0.25, rely=0.85, relwidth=0.5, relheight=0.08) but_limpar = Button(text="Limpar", bd=2, bg='#107db2', fg='white',
font=('verdana', 12, 'bold'), command=limpar)
but_limpar.place(relx=0.8, rely=0.9, relwidth=0.2, relheight=0.1)
root.mainloop()