import flet as ft
import flet.canvas as cv
import random
import numpy as np
def generateNodes(n):
a = []
for _ in range(n):
a.append(ft.Offset(random.randint(100, 400), random.randint(100, 400)))
return a
def generateEdges(nodes):
e = []
sum = 0
for i in range(len(nodes)):
for j in range(i + 1, len(nodes)):
e.extend([nodes[i], nodes[j]])
d = np.sqrt((nodes[i].x - nodes[j].x) ** 2 + (nodes[i].y - nodes[j].y) ** 2)
sum += d
return (e, d)
В моей основной функции есть Canvas и кнопка. При нажатии кнопки я хочу поменять местами два случайных узла и снова отобразить график.
Мне удалось изменить totalDistance после того, как я поменял узлы, но не могу понять, как снова перерисовать график.
Может ли кто-нибудь помочь? Заранее спасибо.
В начале программы я создаю случайный список узлов и линий между ними, чтобы представить граф: [code]import flet as ft import flet.canvas as cv import random import numpy as np
def generateNodes(n): a = [] for _ in range(n): a.append(ft.Offset(random.randint(100, 400), random.randint(100, 400))) return a
def generateEdges(nodes): e = [] sum = 0 for i in range(len(nodes)): for j in range(i + 1, len(nodes)): e.extend([nodes[i], nodes[j]]) d = np.sqrt((nodes[i].x - nodes[j].x) ** 2 + (nodes[i].y - nodes[j].y) ** 2) sum += d return (e, d) [/code] В моей основной функции есть Canvas и кнопка. При нажатии кнопки я хочу поменять местами два случайных узла и снова отобразить график. [code]def swap(a, i, j): a[i], a[j] = a[j], a[i]
def main(page: ft.Page): a = generateNodes(4) edges, totalDistance = generateEdges(a)
ft.app(main) [/code] Мне удалось изменить totalDistance после того, как я поменял узлы, но не могу понять, как снова перерисовать график. Может ли кто-нибудь помочь? Заранее спасибо.