Wie kann man hier Zeilen und Spalten einfügen und löschen?
Verfasst: Samstag 17. Juni 2017, 10:36
Zeilen und Spalten einfügen und löschen soll hier über Mausklick und Tastatur (Einfg, Entf) möglich sein. Wie lässt sich das realisieren?
Code: Alles auswählen
# -*- coding: utf-8 -*-
try:
import tkinter as tk
except ImportError:
import Tkinter as tk
class Application(tk.Tk):
def __init__(self,**kwargs):
tk.Tk.__init__(self,**kwargs)
#self.config(height=160, width=300)
self.minsize(300, 200)
# widget definitions ===================================
self.Button = tk.Button(self,padx=1, width=10, text='Button')
self.Button.grid(column=1, row=0)
self.Entry = tk.Button(self,padx=1, width=10, text='Entry')
self.Entry.grid(column=1, row=1)
self.Frame = tk.Button(self,padx='1', width=10, text='Frame')
self.Frame.grid(column=1, row=2)
self.Label = tk.Button(self,padx=1, width=10, text='Label')
self.Label.grid(row=0)
self.Listbox = tk.Button(self,padx=1, width=10, text='Listbox')
self.Listbox.grid(row=1)
self.Text = tk.Button(self,padx='1', width=10, text='Text')
self.Text.grid(row=2)
self.rowconfigure(0,weight=1,minsize = 30)
self.rowconfigure(1,weight=1,minsize = 30)
self.rowconfigure(2,weight=1,minsize = 30)
self.rows = 3
self.cols = 2
self.table_frames = []
self.line_size = 4
self.insert_table()
def insert_table(self,event = None):
for col in range(self.cols):
compare_frame = tk.Frame(self)
compare_frame.grid(column = col,row = 0, rowspan = self.rows, sticky = 'nsw')
frame = LineFrame(self,width = self.line_size, bg = 'black',compare_frame = compare_frame)
frame.grid(column = col,row = 0, rowspan = self.rows, sticky = 'nse')
frame.bind('<Enter>',frame.tableline_enter_col)
frame.bind('<Leave>',frame.tableline_leave)
frame.bind('<Button-1>',frame.tableline_startmove_col)
self.table_frames.append(frame)
for row in range(self.rows):
compare_frame = tk.Frame(self)
compare_frame.grid(column = 0,row = row, columnspan = self.cols, sticky = 'wen')
frame = LineFrame(self,height = self.line_size, bg = 'black',compare_frame = compare_frame)
frame.grid(row = row, column = 0, columnspan = self.cols, sticky = 'wes')
frame.bind('<Enter>',frame.tableline_enter_row)
frame.bind('<Leave>',frame.tableline_leave)
frame.bind('<Button-1>',frame.tableline_startmove_row)
self.table_frames.append(frame)
class LineFrame(tk.Frame):
def __init__(self,master,**kwargs):
# for measuring column or row size
self.compare_frame = kwargs.pop('compare_frame',None)
tk.Frame.__init__(self,master,**kwargs)
self.master = master
def tableline_enter_col(self,event=None):
self.lift()
self.config( cursor = 'sb_h_double_arrow', bg = 'lightgreen')
def tableline_enter_row(self,event=None):
self.lift()
self.config( cursor = 'sb_v_double_arrow', bg = 'lightgreen')
def tableline_leave(self,event=None):
self.config( cursor = '', bg = 'black')
def tableline_startmove_row(self,event = None):
print("We don't want this now")
def tableline_startmove_col(self,event = None):
print("We don't want this now")
if __name__ == '__main__':
Application().mainloop()