Найти - Пользователи
Полная версия: Прошу вашей помощи
Начало » GUI » Прошу вашей помощи
1
Spartanec
Всем доброго времени суток,прошу не смеяться и не материться… Я начал изучать Python совсем недавно и при разработке одной анимации у меня появилась одна проблема.И так, у меня есть нарисованный в tk лабиринт,и есть объект,который движется по определённой траектории,ну так вот… проблема заключается в том,что когда я запускаю программу,сначала появляется лабиринт,а потом объект,который должен двигаться.Все,кто может помочь склеить это всё воедино,прошу откликнуться.
ниже прикреплён файл с моими работами
4kpt
Я готов помочь. Разобраться что Вы хотите, привести пример и вычитать Ваш код.
Но только после того, как Вы перенесете свой вопрос в ветку GUI.
В этой ветке я этого делать не буду принципиально, так как Ваш вопрос касается GUI, и люди ищут все ответы по GUI предварительно там. А так я отвечу лишь Вам :)
4kpt
Перенес, наверное, модератор. Но все равно…
Теперь вопрос.
Что Вы, мил человек, хотите реализовать.
Как я понимаю, Вы хотите, чтобы солнце двигалось по лабиринту с помощью клавиш “Влево”, “Вправо”, “Вверх” и “Вниз”? Как солнце должно реагировать на препятствия? Какого размера оно должно быть (в том размере, в котором Вы его используете - оно не пролезет через Ваш лабиринт, если считать, что границы солнца не должны перекрывать границы стен лабиринта)?
Опишите полностью задачу и тогда я Вам, с удовольствием, помогу.
Spartanec
С размерами я разберусь,т.к это дело 5ти минут. Солнце будет двигаться просто по нажатии одной клавиши,начальную функцию движения я тоже положил в архив.
Меня интересует такой вопрос, как наложить это солнце на сам лабиринт. Т.к при попытке склеить ф-цию движения и лабиринт ничего хорошего не получалось.
cutwater
Он еще и в rar архив это все запаковал…
4kpt
cutwater
Уже качал. Видел.
Spartanec
Задачу понял. Завтра гляну…
4kpt
Появилось время и возможность…
Посмотри код. Маршрут движения можешь прописать самостоятельно (я просто привел пример).
Если будут вопросы, пиши.
# -*- coding: utf-8 -*-
import Tkinter
import ImageTk
import time
root = Tkinter.Tk()
w = Tkinter.Canvas(root, width=1114, height=640)
w.pack()
w.focus_force()
w.create_polygon(100, 10, 760, 10, 760, 240, 560, 240, 560, 200, 720, 200,
                 720, 50, 680, 50, 680, 160, 520, 160, 520, 240, 480, 240,
                 480, 90, 640, 90, 640, 50, 440, 50, 440, 90, 400, 90, 400,
                 50, 100, 50, 100, 10, fill='red')
w.create_polygon(100, 90, 360, 90, 360, 160, 400, 160, 400, 200, 440, 200,
                 440, 240, 100, 240, 100, 90, fill='green')
w.create_polygon(100, 280, 400, 280, 400, 320, 440, 320, 440, 440, 500, 440,
                 500, 480, 400, 480, 400, 360, 360, 360, 360, 320, 100, 320,
                 100, 280, fill='blue')
w.create_polygon(100, 440, 140, 440, 140, 520, 100, 520, 100, 440,
                 fill='red')
w.create_line(100, 360, 140, 360, 140, 400, 180, 400, 180, 520, 500, 520, 500,
              560, 540, 560, 580, 560, 580, 520, 710, 520, 710, 480, 840, 480,
              840, 440, 920, 440, 920, 520, 880, 520, 880, 560, 920, 560, 920,
              600, 100, 600, fill='red')
w.create_polygon(100, 600, 100, 560, 140, 560, 140, 600, 100, 600,
                 fill='red')
w.create_polygon(200, 600, 200, 560, 280, 560, 280, 600, fill='red')
w.create_polygon(640, 600, 640, 560, 760, 560, 760, 520, 800, 520, 800, 600,
                 800, 600, fill='red')
w.create_polygon(670, 480, 580, 480, 580, 440, 640, 440, 640, 400, 760, 400,
                 760, 360, 720, 360, 720, 280, 760, 280, 760, 320, 800, 320,
                 800, 440, 670, 440, 670, 480, fill='hotpink')
w.create_polygon(480, 400, 480, 320, 520, 320, 520, 280, 680, 280, 680, 360,
                 640, 360, 640, 320, 560, 320, 560, 400, 480, 400,
                 fill='orange')
w.create_line(760, 90, 840, 90, 840, 130, 800, 130, 800, 280, 759, 280,
              fill='orange')
w.create_line(760, 10, 800, 10, fill='blue')
w.create_polygon(800, 10, 1000, 10, 1000, 560, 960, 560, 960, 400, 840, 400,
                 840, 280, 920, 280, 920, 280, 920, 360, 960, 360, 960, 60,
                 920, 60, 920, 240, 840, 240, 840, 200, 880, 200, 880, 50,
                 800, 50, 800, 10, fill='yellow')
w.create_line(100, 360, 100, 440, fill='red')
w.create_line(920, 600, 1000, 600)
finish = ImageTk.PhotoImage(file='finish.gif')
start = ImageTk.PhotoImage(file='start.gif')
sun = ImageTk.PhotoImage(file='sun.gif')
w.create_image(1050, 560, image=finish)
w.create_image(50, 160, image=start)
sun_tk = w.create_image(100, 100, image=sun)
def sun_must_move(event = None):
    for i in xrange(40):
        time.sleep(0.1)
        if i < 20: # Первые двадцать шагов
            w.move(sun_tk, 5, 0)
            w.update_idletasks()
        elif i >= 20: # Следующие двадцать шагов
            w.move(sun_tk, 0, 5)
            w.update_idletasks()
bt = Tkinter.Button(root)
bt["text"] = u"Поехали"
bt["command"] = sun_must_move
bt["width"] = 30
bt["bg"] = "magenta"
bt.pack()
# Если нужно, чтобы солнце двигалось само, нужно удалить строки с bt
# и вставить строку root.after(10, sun_must_move)
root.mainloop()

В очередной раз делаю акцент на отказе от использования конструкции from имя_модуля import*.
Делайте программы с явным указанием на имя_модуля.метод(параметры). В этом случае никогда не будет конфликта имен, соответственно Вы сохраните свои нервы и Вам удасться избежать целого пласта ошибок, связанных с именами переменных.
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