Guia do iniciante para a biblioteca padrão de GUI em Python

Conteúdo

Este artigo foi publicado como parte do Data Science Blogathon.

Introdução

Visão geral do Tkinter

Python fornece uma biblioteca padrão de GUI chamada Tkinter. O módulo Tkinter ajuda a criar aplicações GUI de uma forma rápida e fácil. Tkinter fornece 15 tipos de widgets. Alguns dos mais comuns são botão, Rótulo, Marco, Cardápio. A mensagem, botao de radio, o texto, a barra de rolagem, etc. Você pode ler mais sobre isso aqui e aqui.

Neste artigo. vamos criar um jogo de pequenos números. O usuário continuará a receber perguntas numéricas. Eles responderão e clicarão em Enter para ir para a próxima pergunta até decidirem sair e processar o resultado.. Respostas corretas e incorretas serão capturadas para mostrar o resultado no final. Usaremos widgets como Etiqueta, Fim, Entrada, Texto, Botão. Vamos começar com a implantação sem mais delongas.

Implementação

1. Pacotes de importação

Em geral, é uma boa ideia manter todas as importações separadas. Ao menos, eu gosto assim!

importar tkinter
importar aleatório
de importação aleatória randint
do botão de importação do tkinter
import matplotlib.pyplot as plt
importar numpy como np

2. Criação de uma janela GUI e declaração de variáveis ​​globais

Vamos criar o design da interface. Decida o tamanho do layout e um título atraente

root = tkinter.Tk()
root.title("Você é esperto!!")
root.geometry("400x200")
correct_result = 0
correct_answers = 0
total_questions = 0
incorrect_answer = 0

3. Função para avaliar o resultado

Vamos criar pequenas definições para realizar tarefas que tornam o código fácil de manter e limpo para ler.

def avaliar(evento):
    correct_result global
    user_input global
    user_input_given = user_input.get()
    se str(user_input_given) == str(correct_result):
        correct_answers globais
        correct_answers + = 1
        próxima questão()
    outro:
        resposta incorreta global
        incorrect_answer + = 1
        resultado = tkinter.Label(raiz, text ="Má sorte!!nA resposta correta é : "+str(correct_result), font =('Helvetica', 10))
        result.pack()
        próxima questão()
        root.after(1500, result.destroy)

4. Função para criar uma pergunta

Usaremos aleatório para criar um inteiro aleatório e uma escolha aleatória para o operador '+', ‘-‘ e '*’ para que os usuários possam obter conjuntos aleatórios de perguntas numéricas para responder

def nextQuestion():
    user_input.focus_set()
    user_input.delete(0, tkinter.END)
    first_num global
    first_num = randint(1,15)
    segundo_num global
    second_num = randint(1,15)
    caráter global
    character = random.choice("+-*")
    global correct_result
    if character == '*':
        correct_result = first_num*second_num
    if character == '+':
        correct_result = first_num+second_num
    if character == '-':
        correct_result = first_num-second_num
    text ="Insira o valor de "+str(first_num)+" "+personagem +" "+str(segundo_num)
    total_questions global
    total_questions + = 1
    user_question.config(texto = texto)
    user_question.pack()

5. Função de saída

Vamos criar uma pequena função para sair, interagir e registrar os resultados.

def exitThis():
    imprimir("Total de perguntas atendidas : "+str(Total de perguntas))
    imprimir("Respostas corretas totais : "+str(respostas corretas))
    imprimir("Total de respostas incorretas : "+str(resposta incorreta))
    root.destroy()

6. Questão inicial

Vamos criar um conjunto inicial de perguntas com base em um número inteiro aleatório e um conjunto aleatório de operadores numéricos

first_num = randint(1,15)
second_num = randint(1,15)
character = random.choice("+-*")
se carácter == '*':
    correct_result = first_num*second_num
if character == '+':
    correct_result = first_num+second_num
if character == '-':
    correct_result = first_num-second_num

7. Criação de etiqueta

Vamos criar o texto e o design da interface.

user_question = tkinter.Label(raiz, text ="Insira o valor de "+str(first_num)+" "+personagem +" "+str(segundo_num), font =('Helvetica', 10))
user_question.pack()
user_input = tkinter.Entry(raiz)
root.bind('<Retornar>',Avalie)
user_input.pack()
user_input.focus_set()
exitButton = Botão(raiz, text ="SAIR e verificar o resultado", comando = exitThis)
exitButton.pack(lado ="principal", expand = True, padx = 4, almofadas = 4)

8. Inicie a GUI

root.mainloop()

9. Exibição de resultados

Usaremos una barra y un gráfico de pizza para mostrar el resultado a los usuarios después de que decidan salir del juego.

#Traçando o gráfico de barras
plt.figure(0)
objetos = ('Número Total de Perguntas','Respostas Corretas','Respostas Incorretas')
y_pos = np.arange(len(objetos))
estatísticas = [Total de perguntas,respostas corretas,resposta incorreta]
plt.bar(y_pos, Estatísticas, alinhar='centro', alfa = 0,5)
plt.xticks(y_pos, objetos)
plt.ylabel('Números')
plt.title('O Seu Resultado!')
#Traçando o gráfico de pizza
se str(Total de perguntas) != "0":
plt.figure(1)
rótulos ="Respostas corretas",'Incorrect answers'
sizes = [respostas corretas,resposta incorreta]
cores = ['verde', 'vermelho']
explodir = (0.1, 0) # explodir 1ª fatia
plt.pie(tamanhos, explodir = explodir, rótulos = rótulos, cores = cores,
autopct ="%1.1f %%", shadow = True, startangle = 140)
plt.axis('igual')

#Mostra os dois gráficos
plt.show()

conclusão

Se você veio até aqui, Ele deve ter ficado muito intrigado! Então, é assim que parece finalmente

34432perguntas-9777808
13511análise1-7912038
50426análise 2-8104108

Compartilhe suas idéias se este artigo foi interessante ou te ajudou de alguma forma. Sempre aberto a melhorias e sugestões. Você pode encontrar o código em Github

A mídia mostrada neste artigo não é propriedade da DataPeaker e é usada a critério do autor.

Assine a nossa newsletter

Nós não enviaremos SPAM para você. Nós odiamos isso tanto quanto você.

Datapeaker