Python Ткинтер - регулировка формы - PullRequest
0 голосов
/ 16 апреля 2020

Прежде всего, я начинающий с python / tkinter. Что я пытаюсь сделать: я делаю небольшую панель инструментов, я поместил векторную графику c (png) как холст, поэтому мне не нужно все делать программированием.

import tkinter as tk

root = tk.Tk()
canvas = tk.Canvas(root, width=1900, height=950, borderwidth=0, highlightthickness=0, bg="white")
canvas.pack()

photo = tk.PhotoImage(file='dashboard.png')
root.photo = photo
canvas.create_image(950,480,image=photo)
baterrytop=143
powertop=300

procentop = 100
def key(event):
    global baterrytop
    global procentop
    if event.char == event.keysym:
        if event.char == "w":
            if baterrytop > 143:
                baterrytop -= 1
                procentop += 0.0018
            ctverec = canvas.create_rectangle(1574,688,1732,baterrytop,fill="green2", width=0)
            procento = canvas.create_text(1653,420,text=procentop,font = "Arial 12")

        if event.char == "s":
            if baterrytop < 688:
                baterrytop +=1
                procentop -=0.0018
            ctverec1 = canvas.create_rectangle(1574,143,1732,baterrytop,fill="#e9afaf", width=0)
            procento = canvas.create_text(1653,420,text=procentop,font = "Arial 12")

    #label1.config(text=msg)
root.bind_all('<Key>', key)

Обычно, если я нажимаю 'w' или 's', прямоугольник должен увеличиваться или уменьшаться, проблема в том, что каждый раз, когда я нажимаю клавишу (или удерживаю ее), я создаю новую: ctverec = canvas.create_rectangle(1574,688,1732,baterrytop,fill="green2", width=0) Не думаю, что это отличная идея. Поэтому я попытался выяснить, как просто настроить уже сделанный прямоугольник, и я не смог найти ничего работающего. Есть ли способ, как это сделать?

Спасибо

Ответы [ 2 ]

1 голос
/ 16 апреля 2020

Вы можете создать свой прямоугольник вне ключевого события. Используя

ctverec = canvas.create_rectangle(1574,688,1732,baterrytop,fill="green2", width=0)

Чтобы обновить его позицию или размер, вы можете обновить его координаты, когда происходит ключевое событие, используя

canvas.coords(ctverec, old_x0, old_y0, old_x1, baterrytop)
0 голосов
/ 16 апреля 2020

Вы можете создать свой прямоугольник вне ключевого события. Используя

ctvere c = canvas.create_rectangle (1574,688,1732, baterrytop, fill = "green2", width = 0)

Чтобы обновить его позицию или размер, вы можете обновить это координаты, когда происходит ключевое событие, используя

canvas.coords (ctvere c, old_x0, old_y0, old_x1, baterrytop)

Я бы добавил tk.mainloop() в конец этого тоже, просто чтобы он не вытащил sh или не показывал вам обновления виджета Canvas.

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...