Форум сайта python.su
0
Здравствуйте. Вот вот начал изучать Python, но понадобилось в сжатые сроки сделать некий генератор для твистера. Т.к. сделать надо быстро, углубиться не получается. Вот что уже наделал:
__author__ = 'nivs'
# -*- coding: utf-8 -*-
from random import randint
from Tkinter import *
from time import sleep
def colorprint() :
color_rand = randint(1,4)
if color_rand == 1:
return 'green'
elif color_rand == 2:
return 'red'
elif color_rand == 3 :
return 'blue'
elif color_rand == 4 :
return 'yellow'
pause = False
def button_clicked(pause):
if pause :
pause = False
else :
pause = True
return pause
root=Tk()
root.geometry('300x400')
root.title('Hello, TK!')
button1 = Button(root, bg = "red", fg=" red ", width = 30, height = 30)
while 1:
color = colorprint()
button1.configure(bg = color, fg = color)
sleep(2)
print color
button1.pack(fill = BOTH)
root.mainloop()
Отредактировано (Март 20, 2012 19:42:45)
Офлайн
5
Да почему не правильный, просто побольше времени надо уделить наверное чтоб получалось, т.е. не все сразу придет. Я по сути рассматривал wx, кодом не поделюсь, но. Как то у вас mainloop в бесконечном цикле, чет не очень хорошо. Там последующие итерации проходят вроде когда вы основное окно закрываете. А смену цветов надо делать в обработчиках событий основного потока.
“Как сделать так, чтобы кнопка через каждые 4 секунды сама меняла цвет”
time.sleep() в основном потоке программы использовать не желательно (иначе появяться зависания), так что использовать многопоточность (модуль threading) либо взять какой-нить таймер
Люди занимающиеся на Tkinter мб подскажут тебе более конкретней.
Офлайн
0
Да мне бы просьбу эту выполнить и всё, сам-то я еще до классов даже не дошел, пока делаю простейший конфигуратор файлов репозитариев (просто изменяю некоторые цифры в некоторых строках некоторых файлов), вот там проблем нет. Хотел сделать массовый вывод цветного текста и фона в консоли, но как-то это не кошерно ни разу
Офлайн
18
__author__ = 'nivs'
# -*- coding: utf-8 -*-
from random import choice
from Tkinter import *
from time import sleep
def colorprint() :
return choice(['red','green','blue','yellow'])
pause = False
def button_clicked(pause):
return not pause
root=Tk()
root.geometry('300x400')
root.title('Hello, TK!')
button1 = Button(root, bg = "red", fg="red", width = 30, height = 30)
def addbutton():
root.after(1000,addbutton)
color = colorprint()
button1.configure(bg = color, fg = color)
print color
button1.pack(fill = BOTH)
root.after(1000,addbutton)
root.mainloop()
Офлайн
0
sp3, спасибо, выручили!
Вот что в итоге получилось, наворочено, правда, но тем не менее:
__author__ = 'nivs'
# -*- coding: utf-8 -*-
from random import choice
from Tkinter import *
import winsound
def colorprint() :
return choice(['red','green','blue','yellow'])
def waveprint() :
return choice(['left_arm','left_leg','rigth_arm','rigth_leg'])
x = 1
my_pause = False
color = colorprint()
wave = waveprint()
def pause(e) :
global my_pause
my_pause = not my_pause
def show(e):
global sleep
print ent.get()
if not ent.get() :
sleep = 4
else :
sleep = int(ent.get())
root=Tk()
root.geometry('300x400')
root.title('Hello, TK!')
button1 = Button(root, bg = "red", fg="red", width = 30, height = 60)
sleep = 4
def addbutton():
global ent
global color
global wave
root.after(sleep*1000, addbutton)
if not my_pause :
color = colorprint()
button1.configure(bg = color, fg = color)
ent.pack(side='top')
button1.pack(side='bottom', fill=BOTH)
button1.bind("<Button-1>", pause)
if not my_pause :
winsound.PlaySound(wave + '.wav',winsound.SND_ALIAS)
winsound.PlaySound(color + '.wav',winsound.SND_ALIAS)
ent.bind('<KeyRelease>', show)
ent = Entry(root, width=3)
ent.insert(END,"4")
label = Label(root,text = "TwisterGenerator")
label.pack()
root.after(1000,addbutton)
root.mainloop()
Отредактировано (Март 21, 2012 18:58:24)
Офлайн