Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » GUI
  • » Создание своего модуля для Python [RSS Feed]

#1 Окт. 6, 2017 21:12:34

Jeka_KOzolup1
Зарегистрирован: 2017-10-06
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

Создание своего модуля для Python

Здравствуйте! Хочу создать свой модуль для Python с использованием Tkinter. Это будет модуль для обучения детей програмирыванию. Но есть проблема! Только начал учить ООП, вот код:

 from tkinter import *
 
class Butterfly:
     def __init__(self, width=500, height=500, size=100):
          self.width=width
          self.height=height
          self.size=size
          self.canv=Canvas(root, width=self.width, height=self.height)
          self.canv.pack()
          self.x1=self.width/2-self.size/2
          self.y1=self.height/2-self.size/2
          self.x2=self.width/2+self.size/2
          self.y2=self.height/2+self.size/2
          self.canv.create_polygon(self.x1, self.y1, self.x2, self.y2, self.x2, self.y1, self.x1, self.y2,
                                     tag="butterfly", fill="light grey", outline="black", width=1)
     def move_right(self, key):
          self.canv.move("butterfly", key, 0)
вот создал новый файл подключил модуль и уже ввел несколько строк:
 from butterfly import *
butt=Butterfly(400, 400, 50)
butt.move_right(200)
Суть в том, что в самом модуле все работает, а в новом файле выбиваеться исключение:
 Traceback (most recent call last):
  File "/media/yevhenii/8E24F95024F93BB1/Users/Yevhenii-PC-Windows/Desktop/butterfly.py", line 24, in <module>
    butt.move_right(200)
  File "/media/yevhenii/8E24F95024F93BB1/Users/Yevhenii-PC-Windows/Desktop/butterfly.py", line 20, in move_right
    self.canv.move("butterfly", key, 0)
  File "/usr/lib/python3.5/tkinter/__init__.py", line 2434, in move
    self.tk.call((self._w, 'move') + args)
_tkinter.TclError: invalid command name ".3070977548"
что делать?

Отредактировано Jeka_KOzolup1 (Окт. 6, 2017 22:41:39)

Офлайн

#2 Окт. 9, 2017 12:44:37

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Создание своего модуля для Python

 class Butterfly:
     def __init__(self, width=500, height=500, size=100):
      .....
          self.canv=Canvas(root, width=self.width, height=self.height)
     .....
что такое root? судя по всему вы его никак не передаете внутрь класса, это глбальная переменная вашего модуля?
Вобще я понимаю что у вас чтото типа такого, как принято в учебниках по ТКИнтеру
 root = Tk()
но лучше всеже ссылку на родительский обьект передавать явно:
 сlass Butterfly:
     def __init__(self, root, width=500, height=500, size=100):
          ....
          self.canv=Canvas(root, width=self.width, height=self.height)
          ....

+ даже если вы в модуле выполнили from tkinter import *
в новом файле нужно всеравно импортировать его, хотя бы для создания объекта класса Tk, без которого у вас ничего не выйдет.
Вот так все работает с учетом правок класса Butterfly выше:
 from tkinter import *
from butterfly import *
root = Tk()
butt = Butterfly(root, 400, 400, 50)
butt.move_right(100)
root.mainloop()



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Окт. 9, 2017 12:45:42)

Офлайн

#3 Окт. 9, 2017 14:14:15

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Создание своего модуля для Python

Как то странно что Вы собираетесь учить детей при этом сами только начали ООП …



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#4 Окт. 14, 2017 19:18:38

Jeka_KOzolup1
Зарегистрирован: 2017-10-06
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

Создание своего модуля для Python

PEHDOM
Спасибо большое!!! Вы настоящий учитель!
JOHN_16
На будущее, не смотря на то какой вы профессионал, надо быть скромным и компетентным. Я задал вопрос, а не просил высказать мнение про мои способности учителя)

Офлайн

#5 Ноя. 7, 2017 05:40:11

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Создание своего модуля для Python

Jeka_KOzolup1
На будущее, не смотря на то какой вы профессионал, надо быть скромным и компетентным. Я задал вопрос, а не просил высказать мнение про мои способности учителя)

Уважаемый господин Козолуп! Не смотря на то, что вы не просили меня высказывать свое мнение, я его выскажу (вот так несправедливо устроен этот мир - мы не всегда получаем то, чего хотим). Вы совершенно правы, профессионал должен быть компетентным! С вашим утверждением спорить невозможно, оно аксиоматично. Разумеется, все мы пользователи чьих-то услуг и хотим, чтобы нас лечили, судили, консультировали и кормили компетентные профессионалы. И вне всяких сомнений каждому хочется, чтобы его детей учили компетентные преподаватели. Вы просите не обсуждать ваши способности учителя, но ведь вас никто не просил рассказывать широкой общественности о том, что вы преподаватель. Вы сами гордо и громко об этом заявили, видимо, вы гордитесь своей профессией и уж точно считаете себя компетентным профессионалом. К сожалению, назвать вас профессионалом и тем более компетентным совершенно невозможно. Более того, вы создаете впечатление школьника класса шестого, который решил разыграть товарища и звонит ему писклявым голоском представляясь учителем Василием Петровичем. Всем кроме самого школьника очевидно, что на голос Василия Петровича юное сопрано совсем не похоже. Я не знаю, зачем вам понадобилось называться учителем, но настойчиво советую прекратить комедию.



Офлайн

  • Начало
  • » GUI
  • » Создание своего модуля для Python[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version