@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()
  • Вопрос задан
  • 375 просмотров
Решения вопроса 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
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
19 апр. 2024, в 13:31
10000 руб./за проект
19 апр. 2024, в 13:12
35000 руб./за проект
19 апр. 2024, в 13:06
6000 руб./за проект