https://chat.openai.com/share/d16490c...
https://forms.gle/KngZLEVKM7zr2Pfi7
• Курс Python Урок 12 - 1
User
Button-1 - клік лівою кнопкою миші
Button-2 - клік середньою кнопкою миші
Button-3 - клік правою кнопкою миші
Double-Button-1 - подвійний клік лівою кнопкою миші
Motion - рух миші
import tkinter
def Button1(event):
root.title("Ліва кнопка миші")
def Button3(event):
root.title("Права кнопка миші")
ChatGPT
Схоже, ви почали створювати програму на мові програмування Python і використовуєте бібліотеку tkinter для роботи з графічним інтерфейсом. Програма здається досить короткою і містить дві функції для обробки подій кліку лівою (Button1) та правою (Button3) кнопкою миші.
Продовжте розробку вашої програми, додаючи необхідні частини коду. Наприклад, ви можете використовувати функцію bind для прив'язки цих функцій до конкретних подій миші.
Ваш код виглядає добре. Ви вже додали функцію MyMove, яка виводить координати руху миші в заголовку вікна при кожному зміщенні.
Однак, вибачте за уточнення, але вам також потрібно визначити функції Button1 та Button3, які ви викликаєте через root.bind('Button-1', Button1) та root.bind('Button-3', Button3). Ваш оригінальний код не містить цих функцій.
Отже, ваш код може виглядати так:
import tkinter
def Button1(event):
x = event.x
y = event.y
root.title("Ліва кнопка миші {}x{}".format(x, y))
def Button3(event):
x = event.x
y = event.y
root.title("Права кнопка миші {}x{}".format(x, y))
def MyMove(event):
x = event.x
y = event.y
root.title("Рух мишею {}x{}".format(x, y))
root = tkinter.Tk()
root.minsize(width=1000, height=500)
Прив'язка функцій до подій миші
root.bind('Button-1', Button1) # Ліва кнопка миші
root.bind('Button-3', Button3) # Права кнопка миші
root.bind('Motion', MyMove) # Рух миші
root.mainloop()
Цей код використовує всі три функції для обробки подій миші: Button1, Button3, і MyMove.
Ваш код виглядає добре, але вибачте, але відсутня функція SetMyGUI(), яку ви викликаєте у конструкторі класу Paint. Ця функція ймовірно містить ініціалізацію графічного інтерфейсу, але її вміст не наведено в коді, яким ви поділилися.
Однак, я можу доповнити ваш код, щоб додати функціональність малювання на вікні за допомогою вказаного кольору та розміру пензля. Також додам інші елементи графічного інтерфейсу для вибору кольору та розміру пензля:
import tkinter
from tkinter import colorchooser
class Paint(tkinter.Frame):
def __init__(self, parent):
tkinter.Frame.__init__(self, parent)
self.Parent = parent
self.ColorBrush = "blue"
self.SizeBrush = 5
self.SetMyGUI()
def SetMyGUI(self):
self.Parent.title("Простий малюнок")
self.canv = tkinter.Canvas(self.Parent, bg="white", width=800, height=500)
self.canv.pack(expand=tkinter.YES, fill=tkinter.BOTH)
self.color_btn = tkinter.Button(self.Parent, text="Вибрати колір", command=self.choose_color)
self.color_btn.pack(side=tkinter.LEFT)
self.size_scale = tkinter.Scale(self.Parent, from_=1, to=10, orient=tkinter.HORIZONTAL, label="Розмір пензля",
command=self.set_brush_size)
self.size_scale.pack(side=tkinter.LEFT)
Прив'язка функцій до подій миші
self.canv.bind("B1-Motion", self.draw)
def draw(self, event):
self.canv.create_oval(event.x - self.SizeBrush,
event.y - self.SizeBrush,
event.x + self.SizeBrush,
event.y + self.SizeBrush,
fill=self.ColorBrush, outline=self.ColorBrush)
def choose_color(self):
color = colorchooser.askcolor()[1]
if color:
self.ColorBrush = color
def set_brush_size(self, size):
self.SizeBrush = int(size)
def main():
MyTk = tkinter.Tk()
MyTk.geometry("1000x600+500+500") # widthxheight+x+y
MyApp = Paint(MyTk)
MyTk.mainloop()
if _name_ == "__main__":
main()
У цьому коді я використовую метод colorchooser.askcolor() для вибору кольору та додаю масштаб для вибору розміру пензля. Значення цих параметрів використовуються при малюванні.