Задать вопрос
@kingslayer

Плохой ли это код?

Помогите понять, плохо ли, этот код.
Что можно улучшить?
import tkinter as tk
from tkinter.colorchooser import askcolor
from functools import partial

class App(tk.Tk):
    def __init__(self):
        super().__init__()
        self.movefrom = []
        self.moveto = []
        self.geometry('500x500')
        self.color = None
        self.canvas = tk.Canvas(self, bg='white')
        self.coordinates = tk.Label(self)
        self.prnt_color = tk.Label(self)
        self.button_color = tk.Button(self, text='choose_color', 
                                command=partial(self.ask_color, "fg"))
        
        self.canvas.bind('<Button-1>', self.mouse_motion)
        self.canvas.bind('<Button-3>', self.mouse_motion2)
        
        self.canvas.pack()
        self.coordinates.pack()
        self.prnt_color.pack()
        self.button_color.pack(padx=20, pady=20)
    
    def mouse_motion(self, event):
        self.movefrom.append(event.x)
        self.movefrom.append(event.y)
        text = f'x={event.x}, y={event.y}'
        self.coordinates.config(text=text)
    
    def mouse_motion2(self, event):
        self.moveto.append(event.x)
        self.moveto.append(event.y)
        text = f'x={event.x}, y={event.y}'
        self.coordinates.config(text=text)
        self.canvas.create_line(self.movefrom[0], self.movefrom[1], 
                                self.moveto[0], self.moveto[1],
                                fill=self.color, width=10)
    
        self.movefrom = []
        self.moveto = []
        
    
    def ask_color(self, option):
        ask = askcolor()[1]
        print('выбран цвет {ask}')
        self.prnt_color.config(text=ask)
        self.color = ask
        

if __name__ == '__main__':
    app = App()
    app.mainloop()
  • Вопрос задан
  • 390 просмотров
Подписаться 2 Простой 6 комментариев
Помогут разобраться в теме Все курсы
  • Нетология
    Python-разработчик: расширенный курс + нейросети
    12 месяцев
    Далее
  • Академия Эдюсон
    Python-разработчик
    9 месяцев
    Далее
  • ProductStar × РБК
    Профессия: Python-разработчик + ИИ
    8 месяцев
    Далее
Решения вопроса 1
1. PEP8
2. Я так понимаю что ask_color, mouse_motion2, , mouse_motion используются только внутри класса - тогда эти методы должны быть приватными, а не публичными.
3. mouse_motion1, mouse_motion2, mouse_motion3 - эти очень плохие названия попробуй назвать их так, чтобы по названию было понятно что делает конкретный метод, если они делают несколько вещей - разбей метод на несколько.
4.
self.canvas.bind('<Button-1>', self.mouse_motion)
        self.canvas.bind('<Button-3>', self.mouse_motion2)
        
        self.canvas.pack()
        self.coordinates.pack()
        self.prnt_color.pack()
        self.button_color.pack(padx=20, pady=20)
- я бы вынес это в одельную функцию, которою уже вызывает __init__, хотя это опционально.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
mohovoy
@mohovoy
Что-то там программирую, кто бы знал что именно?
Проверь свой код на соответствие требованиям PEP8
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
ITK academy Краснодар
от 220 000 до 300 000 ₽
ITK academy Краснодар
от 75 000 ₽
DimaTech Ltd Краснодар
от 140 000 до 140 000 ₽