Форум сайта python.su
0
Есть такой кусок программы из учебника:
import Tkinter import math # tk=Tkinter.Tk() canvas=Tkinter.Canvas(tk, height=360, width=480, background="#eeeeff", borderwidth=2).pack(side="bottom") # def plot_x_axe(x0, y0, x1): x_axe =[] xx=(x0, y0) x_axe.append(xx) xx=(x1, y0) x_axe.append(xx) canvas.create_line(x_axe, fill="black", width=2)
Офлайн
39
1. Тема должна быть не здесь, а в разделе gui (это на будущее) 
2. Метода .pack() возвращает None. Ну а None, естественно, не имеет метода .create_line
Чтобы решить это - нужно разделить создание виджета и его упаковку (размещение одним из менеджеров геометрии).
Ваш код:
import Tkinter import math # tk = Tkinter.Tk() canvas = Tkinter.Canvas(tk, height=360, width=480, background="#eeeeff", borderwidth=2) canvas.pack(side="bottom") # def plot_x_axe(x0, y0, x1): x_axe = [] xx = (x0, y0) x_axe.append(xx) xx = (x1, y0) x_axe.append(xx) canvas.create_line(x_axe, fill="black", width=2)
Отредактировано 4kpt_III (Янв. 3, 2015 21:58:01)
Офлайн
0
Извиняюсь, тупанул к вечеру.
Отредактировано Igor-dis (Янв. 3, 2015 21:48:06)
Офлайн
39
Для особо невнимательных повторю.
Вы вызываете метод класса Canvas, который возвращает None, поэтому с переменной canvas связывается не экземпляр Canvas (объект canvas), а результат выполнения метода .pack(), т.е. None. Итого в результате:
canvas = Tkinter.Canvas(tk, height=360, width=480, background="#eeeeff", borderwidth=2).pack(side="bottom")
canvas = None
Отредактировано 4kpt_III (Янв. 3, 2015 21:49:23)
Офлайн
39
Не редактируйте свои посты… Это плохой тон!!! Если кому-то нужно что-то узнать, то не видно диалога, и нельзя собрать последовательность событий.
Офлайн