Simulador de sorteio da Megasena com Python
Olá! Nesse artigo eu ensino a criar um simulador de sorteio com interface gráfica usando Python.
Primeiro, vamos criar 5 números aleatórios. Para isso, importe o pacote random e apelide-o de "rd":
Depois, vamos usar o método rd.sample(), e, no primeiro parâmetro, usamos uma função range para selecionar os números de 1 a 61. No segundo parâmetro da função rd.sample(), definimos que queremos uma lista com 6 números:
A rodar a célula, aparece uma lista com 6 números aleatórios que não se repetem.
Interface gráfica
Agora que temos os números, vamos criar a interface gráfica.
Primeiro, vamos criar a estrutura da nossa tela. Para isso importamos o pacote Tkinter conforme abaixo:
from tkinter import *
Depois, definimos a tela, definimos o título, o tamanho da tela e rodamos a janela:
import random as rd
from tkinter import *
tela = Tk()
tela.title('Megasena')
tela.geometry('450x500')
tela.mainloop()
Em seguida, criamos um rótulo para exibir a palavra "MEGASENA" e um botão que será utilizado para criar os números:
import random as rd
from tkinter import *
tela = Tk()
tela.title('Megasena')
titulo = Label(tela, text='MEGASENA', font='Arial 30 bold', fg='green')
titulo.grid(row=1, column=1, pady=25, padx=100, columnspan=2)
botao = Button(tela, text='Sortear Números', font='Arial 20', bg='light green', fg='green')
botao.grid(row=2, column=1, columnspan=2, pady=30, padx=100)
tela.geometry('450x500')
tela.mainloop()
Para definir onde os elementos ficarão encaixados, usamos o método grid.
Nela, informamos em qual linha (row) e coluna (column) o elemento está. Usamos a propriedade columnspan=2 para que o elemento ocupe na linha o espaço para duas colunas.
Veja como a tela já está criando corpo:
Agora, criamos 6 rótulos onde apareceram os botões:
num1 = Label(tela, text='', font='Arial 30 bold')
num1.grid(row=3, column=1, pady=10, padx=30)
num2 = Label(tela, text='', font='Arial 30 bold')
num2.grid(row=3, column=2, pady=10, padx=30)
num3 = Label(tela, text='', font='Arial 30 bold')
num3.grid(row=4, column=1, pady=10, padx=30)
num4 = Label(tela, text='', font='Arial 30 bold')
num4.grid(row=4, column=2, pady=10, padx=30)
num5 = Label(tela, text='', font='Arial 30 bold')
num5.grid(row=5, column=1, pady=10, padx=30)
num6 = Label(tela, text='', font='Arial 30 bold')
num6.grid(row=5, column=2, pady=10, padx=30)
Voltando em "botao", vamo adicionar no final a propriedade command=sortear:
botao = Button(tela, text='Sortear Números', font='Arial 20', bg='light green', fg='green', command=sortear)
A a propriedade command=sortear chama a função sortear(), que é responsável por gerar os números aleatórios.
Por fim, vamos criar a função sortear deixando-a acima do código da tela:
def sortear():
numeros = rd.sample(range(1,61),6)
num1['text'] = numeros[0]
num2['text'] = numeros[1]
num3['text'] = numeros[2]
num4['text'] = numeros[3]
num5['text'] = numeros[4]
num6['text'] = numeros[5]
A função acima cria os 6 números e exibi-os para cada um dos rótulos.
Segue abaixo o link do GitHub:
https://github.com/phael8919/MegasenaPython/blob/main/megasena.py
Segue abaixo o código completo:
import random as rd
from tkinter import *
def sortear():
numeros = rd.sample(range(1,61),6)
num1['text'] = numeros[0]
num2['text'] = numeros[1]
num3['text'] = numeros[2]
num4['text'] = numeros[3]
num5['text'] = numeros[4]
num6['text'] = numeros[5]
tela = Tk()
tela.title('Megasena')
titulo = Label(tela, text='MEGASENA', font='Arial 30 bold', fg='green')
titulo.grid(row=1, column=1, pady=25, padx=100, columnspan=2)
botao = Button(tela, text='Sortear Números', font='Arial 20', bg='light green', fg='green', command=sortear)
botao.grid(row=2, column=1, columnspan=2, pady=30, padx=100)
num1 = Label(tela, text='', font='Arial 30 bold')
num1.grid(row=3, column=1, pady=10, padx=30)
num2 = Label(tela, text='', font='Arial 30 bold')
num2.grid(row=3, column=2, pady=10, padx=30)
num3 = Label(tela, text='', font='Arial 30 bold')
num3.grid(row=4, column=1, pady=10, padx=30)
num4 = Label(tela, text='', font='Arial 30 bold')
num4.grid(row=4, column=2, pady=10, padx=30)
num5 = Label(tela, text='', font='Arial 30 bold')
num5.grid(row=5, column=1, pady=10, padx=30)
num6 = Label(tela, text='', font='Arial 30 bold')
num6.grid(row=5, column=2, pady=10, padx=30)
tela.geometry('450x500')
tela.mainloop()