Найти - Пользователи
Полная версия: Помогите с tkinter
Начало » Python для новичков » Помогите с tkinter
1
solovs03
Решил поговнокодить тупо для практики и застрял на 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() 

Почему у вас не выводится расстояние между строками?
krok64
Добавь в начало
 random.seed()
Хотя и без этого каждый раз разное рисуется.
solovs03
krok64
Не помогло((, нужно чтоб для каждого прямоугольника были разные параметры.
krok64
 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())
solovs03
krok64
Большое спасибо! А с time не знаете случайно?
krok64
как то так:
 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() 
solovs03
krok64
Благодарю, суть понял, буду эксперементировать
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB