2013-08-20 3 views
0

Я работаю над простыми программами обучения математике для моей 4-летней дочери с помощью изображений. На основе случайного числа, которое мы можем назвать X, цикл for будет запускать X раз и распечатать изображение X раз. Изображение будет выбрано из списка случайным числом, которое также можно назвать Y.Добавить изображения динамически на основе случайного числа

Если X равно 2, изображение Y будет напечатано на экране 2 раза, используя цикл.

Проблема в том, что я не знаю, как это сделать. : P Если кто-нибудь может мне помочь, я был бы благодарен! Я использую python 3.2 и Tkinter.

Вот пример кода для моего списка изображений.

self.imageListRegular = [] 
    self.imageListRegular.append(ImageTk.PhotoImage(file="Bilder/Bird-icon.png")) 
    self.imageListRegular.append(ImageTk.PhotoImage(file="Bilder/elephant-icon.png"))  
    self.imageListRegular.append(ImageTk.PhotoImage(file="Bilder/fish-icon.png")) 
    self.imageListRegular.append(ImageTk.PhotoImage(file="Bilder/ladybird-icon.png")) 
    self.imageListRegular.append(ImageTk.PhotoImage(file="Bilder/zebra-icon.png")) 

С уважением, Роберт

ответ

1

использовать питон random модуль

import random 
image = random.choice(self.imageListRegular) #this is your 'Y' variable 
times = random.randint(1, 4) #this is your 'X' variable 

Затем сделать за цикл, который я представляю себе выглядит примерно так (я не имею Tkinter, так что я могу . Испытание Т код Это происходит из образца here):

import Tkinter 
root = Tkinter.Tk() 
for i in xrange(times): 
    Tkinter.Label(root, image=image).pack() 
root.mainloop() # Start the GUI 

random.choice возвращает случайный элемент в заданной последовательности, так что random.choice(["apples", "bananas", "oranges"]) будет возвращать либо «яблоки», «бананы», или «апельсины»

random.randint(low, high) возвращает случайное число между низким и высоким, в том числе с низким и высоким. Поэтому, если вы хотите отображать изображение между 1 и 4 раза, random.randint(1, 4) будет делать трюк.

+0

Я бы добавил, что если вы не хотите разрешать повторы, работает 'random.sample'. –

Смежные вопросы