Форум сайта python.su
Пишу маленькую программку, в которой есть квадрат и он должен отбиваться от стенок окна.
check=False from tkinter import* rect_x=50#x0 of rect rect_y=50#y0 of rect rect_x1=rect_x+rect_x#x1 of rect rect_y1=rect_y+rect_y#y1 of rect rect_change_x=5#change X speed rect_change_y=3#change Y speed while check==False: if rect_y > 450 or rect_y < 0: rect_change_y = rect_change_y * -1 if rect_x > 650 or rect_x < 0: rect_change_x = rect_change_x * -1 rect_x+=rect_change_x#changing x rect_y+=rect_change_y#changing y rect_x1+=rect_change_x#changing x1 rect_y1+=rect_change_y#changing y1 root=Tk() c=Canvas(root,bg='yellow',width=700,height=500) c.pack() rect=c.create_rectangle(rect_x,rect_y,rect_x1,rect_y1,fill='black') root.mainloop()
Офлайн
У тебя же вечный while.
Офлайн
Где методы движения?
Зачем корневое окно задавать в цикле?
Распишите общий код, а я помогу реализовать :)
Офлайн
4kptНу по сути это и есть все,остальное я там сам допишу(меню .изменение размеров квадрата ,поля и тд и тп).
Где методы движения?Зачем корневое окно задавать в цикле?Распишите общий код, а я помогу реализовать
check=False from tkinter import* rect_x=50#начальные координаты rect_y=50#начальные координаты rect_x1=rect_x+rect_x#начальные координаты rect_y1=rect_y+rect_y#начальные координаты rect_change_x=5#изменение по х rect_change_y=3#изменение по у root=Tk() c=Canvas(root,bg='yellow',width=700,height=500) while check==False: if rect_y > 450 or rect_y < 0: rect_change_y = rect_change_y * -1 if rect_x > 650 or rect_x < 0: rect_change_x = rect_change_x * -1 rect_x+=rect_change_x#Вот изменение x0 rect_y+=rect_change_y#Вот изменение y0 rect_x1+=rect_change_x#Вот изменение x1 rect_y1+=rect_change_y#Вот изменение y1 rect=c.create_rectangle(rect_x,rect_y,rect_x1,rect_y1,fill='black') c.pack() root.mainloop()
Отредактировано catalyst306 (Окт. 11, 2013 21:23:15)
Офлайн
Я все равно не пойму зачем нужен цикл?
Какая его задача. Бесконечно получать данные и двигать квадрат?
Офлайн
4kptВсе нашел правильное решение ,спасибо.
Я все равно не пойму зачем нужен цикл?Какая его задача. Бесконечно получать данные и двигать квадрат?
__author__ = 'Anton' check=False from tkinter import* rect_x=50#x0 of rect rect_y=50#y0 of rect rect_x1=rect_x+rect_x#x1 of rect rect_y1=rect_y+rect_y#y1 of rect rect_change_x=10#change X speed rect_change_y=3#change Y speed root=Tk() c=Canvas(root,bg='yellow',width=700,height=500) c.pack() def paintloop(): global check,rect_x,rect_y,rect_x1,rect_y1,rect_change_x,rect_change_y root.after(100, paintloop) rect=c.create_rectangle(rect_x,rect_y,rect_x1,rect_y1,fill='black') if rect_y > 450 or rect_y < 0: rect_change_y = rect_change_y * -1 if rect_x > 650 or rect_x < 0: rect_change_x = rect_change_x * -1 rect_x+=rect_change_x#changing x rect_y+=rect_change_y#changing y rect_x1+=rect_change_x#changing x1 rect_y1+=rect_change_y#changing y1 root.after(0,paintloop) root.mainloop()
Офлайн
Это не очень хорошая практирка. Больше так не делайте.
global check,rect_x,rect_y,rect_x1,rect_y1,rect_change_x,rect_change_y
import tkinter root = tkinter.Tk() cnv = tkinter.Canvas(root, bg='yellow', width=700, height=500) cnv.pack() rect = cnv.create_rectangle(50, 50, 100, 100, fill='black') def paintloop(): cnv.move(rect, 2, 2) root.after(10, paintloop) root.after(0, paintloop) root.mainloop()
Отредактировано 4kpt (Окт. 12, 2013 00:50:09)
Офлайн
4kptкак получить координаты квадрата?
Это не очень хорошая практирка. Больше так не делайте.
Офлайн
Явно их передать :)
Офлайн