Ну, я никогда не работал в Python до этого проекта.Я делаю это, потому что это задание от учителя (даже несмотря на то, что у нас никогда не было занятий по Python) и, конечно, потому что изучение нового языка всегда хорошо.
В любом случае, этот код работает, как и предполагалось, пока ядобавьте еще один экземпляр класса AND
.Когда я добавляю его в мой код, все сходит с ума.Буду признателен, если вы проверите, как работает мой код с обоими тестовыми экземплярами класса AND
и без него.Пока мы занимаемся этим, я был бы очень признателен, если бы кто-нибудь из вас, ребята, смог рассказать мне, как заставить кнопку AND
создать новый экземпляр класса (например, в c ++ я бы использовал новый AND
, я хочу кое-чтопохоже, когда я нажимаю кнопку).
РЕДАКТИРОВАТЬ: Как кто-то указал, я не был достаточно ясен.То, что я имел в виду, сводит с ума то, что когда я добавляю более 1 экземпляра класса, функция щелчка и перетаскивания, которую я пытаюсь сделать, больше не работает должным образом.Щелчок и перетаскивание больше не работают для одного квадрата, а для другого он будет просто следовать за моей мышью всякий раз, когда я обхожу его, даже если бы я не щелкал.Я действительно верю, что это потому, что у меня есть эта функция int init :
self.workspace.tag_bind(self.patrat,"<Enter>",self.whileInside)
workspace.bind("<ButtonRelease-1>",self.onRelease)
Я думаю, что это не относится к этому, но я действительно не знаю, как написать свой код икуда это поставить, если в этом проблема
Вот мой код:
import tkinter as tk
from tkinter import*
def doNothing():
print("nothing happens bro")
root = Tk()
#========= Drop down menu/toolbar
menu = Menu(root)
root.config(menu=menu)
subMenu = Menu(menu)
menu.add_cascade(label="file", menu=subMenu)
subMenu.add_command(label="New Project...",command=doNothing)
subMenu.add_command(label="New",command=doNothing)
subMenu.add_separator()
subMenu.add_command(label="exit",command=doNothing)
editMenu = Menu(menu)
menu.add_cascade(label="edit", menu=editMenu)
editMenu.add_command(label="redo", command=doNothing)
#========Canvas
workspace=tk.Canvas(root, width=740, height=540,bg="white")
workspace.grid(row=0,column=1)
#====DRAW FUNCTIONS
# Draw rectangle
class AND():
def __init__(self):
x=10
y=10
self.workspace=workspace
self.patrat = workspace.create_rectangle(x , y , x + 40 , y + 40,fill = "blue")
self.workspace.tag_bind(self.patrat,"<Enter>",self.whileInside)
print("self.workspace.tag_bind(self.patrat,<Enter>,self.whileInside)")
workspace.bind("<ButtonRelease-1>",self.onRelease)
print(" workspace.bind(<ButtonRelease-1>,self.onRelease)")
def whileInside(self,event):
self.workspace.tag_bind(self.patrat,"<Button-1>",self.onClick)
print("self.workspace.tag_bind(self.patrat,<Button-1>,self.onClick)")
def onClick(self,event):
self.workspace.tag_bind(self.patrat,"<Motion>", self.callback)
print("self.workspace.tag_bind(self.patrat,<Motion>, self.callback)")
def onRelease(self,event):
self.workspace.tag_unbind(self.patrat,"<Enter>")
print(" self.workspace.tag_unbind(self.patrat,<Enter>)")
self.workspace.tag_unbind(self.patrat,"<Button-1>")
print("self.workspace.tag_unbind(self.patrat,<Button-1>)")
self.workspace.tag_unbind(self.patrat,"<Motion>")
print(" self.workspace.tag_unbind(self.patrat,<Motion>)")
def callback(self,event):
x, y = event.x, event.y
self.workspace.coords(self.patrat, x, y, x + 40, y + 40)
test=AND()
test2=AND()
#========Left Frame
frame= Frame(root)
frame.grid(row = 0, column = 0, sticky = "n")
leftButton1 = Button(frame,text = "AND",width = 10).grid(row = 1, column = 0)
leftButton2 = Button(frame,text = "OR",width = 10).grid(row = 2, column = 0)
leftButton3 = Button(frame,text = "XOR",width = 10).grid(row = 3, column = 0)
leftButton4 = Button(frame,text = "XNOR",width = 10).grid(row = 4, column = 0)
leftButton5 = Button(frame,text = "NOT",width = 10).grid(row = 5, column = 0)
root.mainloop()