Article image
RAPHAEL SOARES
RAPHAEL SOARES31/12/2024 10:48
Compartilhe

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":

    image

    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:

    image

    A rodar a célula, aparece uma lista com 6 números aleatórios que não se repetem.

    Interface gráfica

    image

    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:

    image

    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()
    
    
    
    Compartilhe
    Comentários (1)

    AF

    Alan Ferreira - 31/12/2024 11:26

    Legal, você ainda pode obter números verdadeiramente aleatórios fazendo uma chamada de API para o site random.org


    url = "https://api.random.org/json-rpc/4/invoke"
    headers = {"Content-Type": "application/json"}
    
    data = {
      "jsonrpc": "2.0",
      "method": "generateIntegers",
      "params": {
        "apiKey": API,
        "n": 6,
        "min": 1,
        "max": 60
      },
      "id": 1
    }