Несколько фигур на одном холсте - PullRequest
0 голосов
/ 04 апреля 2019

Я хочу нарисовать несколько фигур на одном и том же холсте, используя tkinter Python при нажатии кнопки, т.е. при первом нажатии кнопки я хочу показать изображение1, а при втором нажатии кнопки я хочу отобразить изображение2 и т. Д.,Параллельно с этим я добавляю название изображений в древовидную структуру, которая размещена помимо холста.Также я хочу иметь функцию, которая, когда я нажимаю на любую запись древовидной структуры, должна отображать это конкретное изображение на холсте, а другие изображения / рисунки должны быть в памяти.Используемый код выглядит следующим образом:

def canvas_pic():
    # asking the user to select the image file using tkinter "askopenfilename"
    canvas_pic.counter += 1
    tree.insert("", canvas_pic.counter, "dir"+str(canvas_pic.counter), 
         text="Image"+str(canvas_pic.counter))
    ax = fig.add_subplot(111)
    ax.imshow(image)
    canvas.draw()

fig = Figure(figsize=(15, 2), dpi=100)
canvas = FigureCanvasTkAgg(fig, master=root)
canvas.get_tk_widget().pack(side=tkinter.TOP, fill=tkinter.BOTH, expand=1, padx=10, pady=5)

Любая помощь будет принята с благодарностью.

Как и предполагалось "ZF007", решение сработало для меня, и рабочее решение:

def canvas_pic():
    # asking the user to select the image file using tkinter "askopenfilename"
    canvas_pic.counter += 1
    tree.insert("", canvas_pic.counter, "dir"+str(canvas_pic.counter), 
         text="Image"+str(canvas_pic.counter))

    global dct_array
    if (canvas_pic.counter == 1):
        dct_array = {}

    dct_array["dir"+str(canvas_pic.counter)] = image as an array loaded above

def image_draw():
    rowno = 'selected treeview element'
    image_display = dct_array[rowno]
    ax = fig.add_subplot(111)
    ax.imshow(image_display, cmap='gist_rainbow')
    ax.set(title="",xticks=[], yticks=[])
    canvas.draw() 

1 Ответ

0 голосов
/ 04 апреля 2019

Как предложено "ZF007", решение сработало для меня, и рабочее решение:

def canvas_pic():
    # asking the user to select the image file using tkinter "askopenfilename"
    canvas_pic.counter += 1
    tree.insert("", canvas_pic.counter, "dir"+str(canvas_pic.counter), 
         text="Image"+str(canvas_pic.counter))

    global dct_array
    if (canvas_pic.counter == 1):
        dct_array = {}

    dct_array["dir"+str(canvas_pic.counter)] = image as an array loaded above

def image_draw():
    rowno = 'selected treeview element'
    image_display = dct_array[rowno]
    ax = fig.add_subplot(111)
    ax.imshow(image_display, cmap='gist_rainbow')
    ax.set(title="",xticks=[], yticks=[])
    canvas.draw() 
...