added template for tk applications and first sketch of canvas test

master
Martin Putzlocher 2021-12-28 14:31:58 +01:00
parent c976aabdba
commit 22831cfc19
2 changed files with 100 additions and 0 deletions

68
tk_canvas/my_canvas.py Normal file
View File

@ -0,0 +1,68 @@
import tkinter as tk
import tkinter.ttk as ttk
class Controller(object):
def __init__(self, app):
self.app = app
self.selected = None
self.selected_start = None
self.selected_end = None
def run_process(self):
print("Run")
self.app.main_canvas.bind('<1>', self.make_circle)
self.app.main_canvas.bind('<3>', self.select_item)
self.app.main_canvas.bind('<SHIFT-1>', self.select_for_line)
return 0
def make_circle(self, event):
x = event.x
y = event.y
r = 20
self.app.main_canvas.create_oval(x-r, y-r, x+r, y+r, fill="white", outline="black", tag="circle")
def select_item(self, event):
self.app.main_canvas.bind('<Motion>', self.move_item)
self.app.main_canvas.bind('<1>', self.deselect_item)
self.app.main_canvas.addtag_withtag('selected', tk.CURRENT)
def deselect_item(self, event):
self.app.main_canvas.dtag('selected')
self.app.main_canvas.unbind('<Motion>')
self.app.main_canvas.bind('<1>', self.make_circle)
def move_item(self, event):
x = event.x
y = event.y
r = 20
self.app.main_canvas.coords("selected",x-r, y-r, x+r, y+r)
def select_for_line(self, event):
pass
class Application(tk.Tk):
def __init__(self):
super().__init__()
self.con = Controller(self)
self.create_control_variables()
self.create_widgets()
def create_control_variables(self):
pass
def create_widgets(self):
self.main_canvas = tk.Canvas(master=self, width=500, height=400, background='gray75')
self.main_canvas.grid(row=0, column=0)
self.b = ttk.Button(master=self, text="Start", command=self.con.run_process)
self.b.grid(row=1, column=0)
# --------------------------
# Execution
# --------------------------
if __name__ == "__main__":
app = Application()
app.mainloop()

32
tk_template.py Normal file
View File

@ -0,0 +1,32 @@
import tkinter as tk
import tkinter.ttk as ttk
class Controller(object):
def __init__(self, app):
self.app = app
def run_process(self):
print("Run")
return 0
class Application(tk.Tk):
def __init__(self):
super().__init__()
self.con = Controller(self)
self.create_control_variables()
self.create_widgets()
def create_control_variables(self):
pass
def create_widgets(self):
self.b = ttk.Button(master=self, text="Start", command=self.con.run_process)
self.b.grid(row=1, column=0)
# --------------------------
# Execution
# --------------------------
if __name__ == "__main__":
app = Application()
app.mainloop()