1
I created a code in Python to present a puzzle game of numbers between 1 and 100. I wanted to implement this game in a graphical interface, using the Tkinter module. I had an idea, I created a code using Tkinter, but after that I stopped. My question is, how to "unite" the two codes that were created in one, to create this graphical interface.
That part is that I used to create the box with the presentation of the game and the button to run using Tkinter.
from tkinter import *
import random
i = Tk()
i.title('Guess Game')
i.geometry("400x200")
texto = Label(i, text = "Bem-vindo ao Guess Game")
texto.pack()
texto = Label(i, text = "Você tem 10 chances de acertar o número que eu estou pensando.")
texto.pack()
texto = Label(i, text = "Trata-se de um valor entre 1 e 100. Então, vamos lá!")
texto.pack()
form = Entry(i, width=3)
form.pack()
b = Button(i, text ="Executar", fg= "green")
b.pack()
i.mainloop()
That part is the code of the Game itself, previously created.
import random
n = random.randrange(1, 101)
nrepete = []
estado1 = 7 # início
estado2 = 7
def Submeter(tentativa):
global estado2
if abs(n - palpite) == 1:
estado2 = 6 # fervendo
if abs(n - palpite) == 2 or abs(n - palpite) == 3:
estado2 = 5 # muito quente
if abs(n - palpite) >= 4 and abs(n - palpite) <= 6:
estado2 = 4 # quente
if abs(n - palpite) >= 7 and abs(n - palpite) <= 9:
estado2 = 3 # morno
if abs(n - palpite) >= 10 and abs(n - palpite) <= 15:
estado2 = 2 # frio
if abs(n - palpite) >= 16 and abs(n - palpite) <= 25:
estado2 = 1 # muito frio
if abs(n - palpite) >= 26:
estado2 = 0 # congelando
def FornecerPista():
if estado1 == 7:
if estado2 == 0:
print('Está congelando!')
if estado2 == 1:
print('Está muito frio!')
if estado2 == 2:
print('Está frio!')
if estado2 == 3:
print('Está morno!')
if estado2 == 4:
print('Está quente!')
if estado2 == 5:
print('Está muito quente!')
if estado2 == 6:
print('Está fervendo!')
if estado1 - estado2 == 0:
if estado2 == 0:
print('Seu palpite continua congelando!')
if estado2 == 1:
print('Seu palpite continua muito frio!')
if estado2 == 2:
print('Seu palpite continua frio!')
if estado2 == 3:
print('Seu palpite continua morno!')
if estado2 == 4:
print('Seu palpite continua quente!')
if estado2 == 5:
print('Seu palpite continua muito quente!')
if estado2 == 6:
print('Seu palpite continua fervendo!')
if estado1 - estado2 > 0:
if estado2 == 0:
print('Ops, seu palpite deu uma esfriada e agora está congelando!')
if estado2 == 1:
print('Ops, seu palpite deu uma esfriada e agora está muito frio!')
if estado2 == 2:
print('Ops, seu palpite deu uma esfriada e agora está frio!')
if estado2 == 3:
print('Ops, seu palpite deu uma esfriada e agora está morno!')
if estado2 == 4:
print('Ops, seu palpite deu uma esfriada e agora está quente!')
if estado2 == 5:
print('Ops, seu palpite deu uma esfriada e agora está muito quente!')
if estado1 - estado2 < 0:
if estado2 == 1:
print('Ops, seu palpite deu uma esquentada e agora está muito frio!')
if estado2 == 2:
print('Ops, seu palpite deu uma esquentada e agora está frio!')
if estado2 == 3:
print('Ops, seu palpite deu uma esquentada e agora está morno!')
if estado2 == 4:
print('Ops, seu palpite deu uma esquentada e agora está quente!')
if estado2 == 5:
print('Ops, seu palpite deu uma esquentada e agora está muito quente!')
if estado2 == 6:
print('Ops, seu palpite deu uma esquentada e agora está fervendo!')
for tentativa in range(1, 11):
while True:
try:
palpite = input('Tentativa' + str(tentativa) + ':')
palpite = int(palpite)
nrepete.append(palpite)
if (palpite < 1) or (palpite > 100):
raise ValueError
if nrepete.count(palpite) >= 2:
raise NameError
else:
break
except NameError:
print('Esse valor já foi testado! Tente de novo.')
except ValueError:
print('Valor inválido! Tente de novo.')
if palpite == n:
print('\nParabéns !')
print('\nVocê acertou o número', n, 'após', tentativa, 'tentativa(s)!')
break
if tentativa == 1:
SetStatus(tentativa)
if tentativa > 1:
estado1 = estado2
SetStatus(tentativa)
FornecerPista()
if tentativa == 10 and palpite != n:
print('\nLamento, mas após', tentativa, 'tentativas')
print('Você não conseguiu acertar o número', n, 'que eu estava pensando!')
How would you do that?
– Renato Silva
I did it, however when I put it to run it only runs the second block, nothing from the graphical part.
– Renato Silva
Your logic implemented in creating the
Tkinter
is good but the same will not do anything because it does not receive any external data.– ThiagoO
Yeah, that was my question. I managed to create the window, but I couldn’t use the second block in it.
– Renato Silva
In your second file you seem to have made the console script, it is not communicating with the
Tkinter
. TheTkinter
works basically as follows: You set a widget be it a window, button or whatever, and define a command that it will execute if you act interaction with the user an example would bebutton = tk.Button(text='Clique aqui', command=<função_que_será_executada>)
. For more information read https://docs.python.org/3/library/tkinter.html– ThiagoO