Как сделать рандом на Tkinter

361 просмотра
0
0 Комментариев

Здравствуйте, мне нужно создать алгоритм рандома на Tkinter, я создал 2 списка из которых программа должна рандомно выбрать одно имя, но я не понимаю как сделать так чтобы она выбирала список опираясь на то что ввел я (на пример если я ввожу 1 то программа выбирает из списка code_list1, и наоборот)

Вот код:

import sys
from tkinter import *
import random
 
code_list1 = [("Sledge"),("Thatcher"),("Ash"),("Thermite"),
              ("Twitch"),("Montagne"),("Glaz"),("Fuze"),
              ("Blitz"),("IQ"),("Buck"),("Blackbeard"),
              ("Capitao"),("Jackal"),("Ying"),("Zofia"),
              ("Dokkaebi")]
 
code_list2 = [("Smoke"),("Mute"),("Castle"),("Pulse"),("Doc"),("Rook"),
              ("Tachanka"),("Jager"),("Bandit"),("Frost"),("Valkyrie"),
              ("Echo"),("Mira"),("Ela"),("Lesion"),("Vigil"),("Caveira"),
              ("Kapkan")]
 
 
def mhello():
    mtext = ment.get()
    mlabe12 = Label(mGui,
    return
 
 
mGui = Tk()
ment = StringVar()
 
mGui.geometry('450x450+500+300')
mGui.title('R6S Operator Randomizer 2.0')
 
mlabel = Label(mGui, text='Введите сторону оперативника').pack()
 
mbutton = Button(mGui,text = 'OK', command = mhello, fg =
'red',bg='blue').pack()
 
mEntry = Entry(mGui,textvariable=ment).pack()
mGui.mainloop()


Добавить комментарий

4 Answers

Python Опубликовано 16.12.2018
0

ret = None
if entered_code == 1:
    rnd = int(random.random() * float(len(code_list1) - 1))
    ret = code_list1[rnd]
elif entered_code == 2:
    rnd = int(random.random() * float(len(code_list2) - 1))
    ret = code_list2[rnd]

А еще лучше объединить два списка в список списков и просто адресовать :

rnd = int(random.random() * float(len(code_list[entered_code]) - 1))
ret = code_list[entered_code][rnd]

Добавить комментарий
0

При помощи функции len(n) можно узнать количество значений в вашем массиве, а при помощи randrange(a,b) можно задать рандомное значение с точки a до точки b на примере вашего кода это будет выглядеть так.

import sys
from tkinter import *
import random
 
code_list1 = [("Sledge"),("Thatcher"),("Ash"),("Thermite"),
              ("Twitch"),("Montagne"),("Glaz"),("Fuze"),
              ("Blitz"),("IQ"),("Buck"),("Blackbeard"),
              ("Capitao"),("Jackal"),("Ying"),("Zofia"),
              ("Dokkaebi")]
length_code_list1 = len(code_list1)
 
code_list2 = [("Smoke"),("Mute"),("Castle"),("Pulse"),("Doc"),("Rook"),
              ("Tachanka"),("Jager"),("Bandit"),("Frost"),("Valkyrie"),
              ("Echo"),("Mira"),("Ela"),("Lesion"),("Vigil"),("Caveira"),
              ("Kapkan")]
length_code_list2 = len(code_list2)
 
def mhello():
    mtext = ment.get()
 
    if mtext == '1':
        number = random.randrange(0, length_code_list1)
        mlabe12.config(text='You name ' + code_list1[number])
    elif mtext == '2':
        number = random.randrange(0, length_code_list2)
        mlabe12.config(text='You name ' + code_list2[number])
    else:
        mlabe12.config(text='Введите либо значение 1 либо значение 2')
    return
 
 
mGui = Tk()
ment = StringVar()
 
mGui.geometry('450x450+500+300')
mGui.title('R6S Operator Randomizer 2.0')
 
mlabel = Label(mGui, text='Введите сторону оперативника').pack()
 
mbutton = Button(mGui,text = 'OK', command = mhello, fg =
'red',bg='blue').pack()
 
mEntry = Entry(mGui,textvariable=ment).pack()
mlabe12 = Label(mGui)
mlabe12.pack()
mGui.mainloop()

Добавить комментарий
0

Для получения случайного значения из последовательности лучше использовать random.choice.

Пример получения случайного элемента из списков:

import random
item_1 = random.choice(code_list1)
item_2 = random.choice(code_list2)

Добавить комментарий
0

В данном случае, идеальным вариантом будет random.choice(list_name).

Также в общих чертах можно реализовать так:

import random
list = [1, 2, 3, 4, 5]
rand_num = random.randint(0, len(list) +1)
name = list[rand_num]

Добавить комментарий
Напишите свой ответ на данный вопрос.
Scroll Up