Форум сайта python.su
0
Решил поговнокодить тупо для практики и застрял на random, при каждом обращении к функции, объекту функции, собственной функции, объекту собственной функции выводит одни и те же числа. Цель программы выводить прямоугольники в разных местах с разным размером и разным цветом. Как при каждом обращение к функции random.randint() просить разные числа заданного диапазона?
Я ещё с time норм не разобрался за любую помощь с time буду очень благодарен, хотел бы чтоб она выводила время в реальном времени (через циклы нереально).
Я новичок, прошу не судить строго:
from tkinter import * import time import random colors = ['#1abc9c', '#2ecc71', '#3498db', '#9b59b6', '#34495e', '#16a085', '#2980b9', '#27ae60', '#95a5a6', '#ecf0f1', '#f1c40f', '#d35400'] def randomc(): cvet = random.choice(colors) return cvet z = randomc() #cvet = random.choice(colors) def xsiz(): xsize = random.randint(10, 40) return xsize xs = xsiz() #xsize = random.randint(10, 40) def ysiz(): ysize = random.randint(10, 40) return ysize #ysize = random.randint(10, 40) ys = ysiz() def xlocat(): xloca = random.randint(150, 400) return xloca xloc = xlocat() #xlocat = random.randint(150, 400) def yloca(): ylocat = random.randint(150, 400) return ylocat ylocas = yloca() #ylocat = random.randint(150, 400) tmmm = time.time() now_time = time.ctime(tmmm) root = Tk() root.title('My program') canvas1 = Canvas(root, width=500, height=400, bg='green') canvas1.pack() canvas1.create_line(500, 400, 0, 0, width=5, fill='yellow') canvas1.create_line(300, 400, 0, 0, width=5, fill='purple') canvas1.create_line(750, 400, 0, 0, width=5, fill='red') canvas1.create_text(415, 10, text=now_time, fill='white', font='family') canvas1.create_rectangle(xloc, ylocas, xs, ys, fill=z) canvas1.create_rectangle(xloc, ylocas, xs, ys, fill=z) canvas1.create_rectangle(xloc, ylocas, xs, ys, fill=z) canvas1.create_rectangle(xloc, ylocas, xs, ys, fill=z) canvas1.create_rectangle(xloc, ylocas, xs, ys, fill=z) root.mainloop()
Отредактировано solovs03 (Июль 4, 2017 14:17:08)
Офлайн
11
Добавь в начало
random.seed()
Отредактировано krok64 (Июль 4, 2017 14:40:18)
Офлайн
0
krok64
Не помогло((, нужно чтоб для каждого прямоугольника были разные параметры.
Офлайн
11
canvas1.create_rectangle(xlocat(), yloca(), xsiz(), ysiz(), fill=randomc()) canvas1.create_rectangle(xlocat(), yloca(), xsiz(), ysiz(), fill=randomc()) canvas1.create_rectangle(xlocat(), yloca(), xsiz(), ysiz(), fill=randomc()) canvas1.create_rectangle(xlocat(), yloca(), xsiz(), ysiz(), fill=randomc()) canvas1.create_rectangle(xlocat(), yloca(), xsiz(), ysiz(), fill=randomc())
Офлайн
0
krok64
Большое спасибо! А с time не знаете случайно?
Офлайн
11
как то так:
from tkinter import * import time import random colors = ['#1abc9c', '#2ecc71', '#3498db', '#9b59b6', '#34495e', '#16a085', '#2980b9', '#27ae60', '#95a5a6', '#ecf0f1', '#f1c40f', '#d35400'] def randomc(): cvet = random.choice(colors) return cvet z = randomc() #cvet = random.choice(colors) def xsiz(): xsize = random.randint(10, 40) return xsize xs = xsiz() #xsize = random.randint(10, 40) def ysiz(): ysize = random.randint(10, 40) return ysize #ysize = random.randint(10, 40) ys = ysiz() def xlocat(): xloca = random.randint(150, 400) return xloca xloc = xlocat() #xlocat = random.randint(150, 400) def yloca(): ylocat = random.randint(150, 400) return ylocat ylocas = yloca() #ylocat = random.randint(150, 400) def timerupdate(): tmmm = time.time() now_time = time.ctime(tmmm) a.configure(text=now_time) root.after(1000, timerupdate) tmmm = time.time() now_time = time.ctime(tmmm) root = Tk() root.title('My program') canvas1 = Canvas(root, width=500, height=400, bg='green') canvas1.pack() canvas1.create_line(500, 400, 0, 0, width=5, fill='yellow') canvas1.create_line(300, 400, 0, 0, width=5, fill='purple') canvas1.create_line(750, 400, 0, 0, width=5, fill='red') a = Label(text="") a.pack() canvas1.create_rectangle(xlocat(), yloca(), xsiz(), ysiz(), fill=randomc()) canvas1.create_rectangle(xlocat(), yloca(), xsiz(), ysiz(), fill=randomc()) canvas1.create_rectangle(xlocat(), yloca(), xsiz(), ysiz(), fill=randomc()) canvas1.create_rectangle(xlocat(), yloca(), xsiz(), ysiz(), fill=randomc()) canvas1.create_rectangle(xlocat(), yloca(), xsiz(), ysiz(), fill=randomc()) timerupdate() root.mainloop()
Офлайн
0
krok64
Благодарю, суть понял, буду эксперементировать
Офлайн