#python #if-statement #tkinter
#python #оператор if #tkinter
Вопрос:
(отредактировано)
Я попытался поместить свои операторы if в функцию messagebox и заставить кнопку распечатать сообщение с номером и соответствующим игроком. Я перепробовал все, что мог придумать, и это все еще не работает, на данный момент он выводит случайное число, но, конечно, я хочу, чтобы оно также печатало имя игрока, любая помощь будет оценена 🙂
import tkinter as tk
from tkinter import *
from tkinter import messagebox
import random
no_1 = "De Gea"
no_2 = "Lindelof"
no_3 = "Bailly"
no_5 = "Maguire"
no_6 = "Pogba"
no_7 = "Sancho"
no_8 = "Mata"
no_9 = "Martial"
no_10 = "Rashford"
no_12 = "Smalling"
no_13 = "Grant"
no_14 = "Lingard"
no_15 = "Pereira"
no_16 = "Rojo"
no_17 = "Fred"
no_18 = "Bruno"
def united_players():
number = random.randint(1, 20)
print(number)
if number == 18:
print(no_18)
elif number == 17:
print(no_17)
elif number == 16:
print(no_16)
elif number == 15:
print(no_15)
elif number == 14:
print(no_14)
elif number == 13:
print(no_13)
elif number == 12:
print(no_12)
elif number == 10:
print(no_10)
elif number == 9:
print(no_9)
elif number == 8:
print(no_8)
elif number == 7:
print(no_7)
elif number == 6:
print(no_6)
elif number == 5:
print(no_5)
elif number == 3:
print(no_3)
elif number == 2:
print(no_2)
elif number == 1:
print(no_1)
else:
print("Player not found")
def generate_number():
messagebox.showinfo("You got this player!", random.randint(1, 20))
root = tk.Tk()
canvas = tk.Canvas(root, height=600, width=600, bg="#e53242")
canvas.pack()
label1 = tk.Label(root, text="Click for a random player", bg="#e53242", fg="#323648")
label1.config(font=("", 24))
label1.place(relx=0.22, rely=0.1)
button1 = tk.Button(root, height=12, width=30, text="Random n Man United player", command=generate_number, bg="#ef7a85", activebackground="#dd6d11")
button1.place(relx=0.34, rely=0.4)
root.mainloop()
Комментарии:
1. Не могли бы вы перепроверить свой код и вставить его снова? Например, print (number) не выглядит так, как будто он был объявлен как функция. И в аргументе elif для 15, похоже, есть еще один elif для 5 внутри этого? Это намеренное или?
2. Также включить импорт
3. Вы пробовали просто поместить код в функцию и вызвать функцию с кнопки? Непонятно, о чем вы на самом деле спрашиваете.
4. Есть несколько способов решить эту проблему, и стена
elif
— это не способ. Функция с циклом, который проходит через список или словарь, была бы, вероятно, лучшей.5. Я добавил остальную часть своего кода. Да, я пытался поместить код в функцию и вызвать с кнопки, но это не сработало, и я думаю, что Скотти в основном ответил на мой вопрос с помощью поиска по словарю, так что спасибо.
Ответ №1:
Это случай для поиска по словарю:
players = {
18: no_18, 17: no_17, 16: no_16, 15: no_15, 5: no_5,
3: no_3, 2: no_2, 1: no_1}
def generate_number():
messagebox.showinfo(
"You got this player!",
players.get(random.randint(1, 20), 'Player not found!')
)