2323try :
2424 from tkinter import *
2525 from tkinter .ttk import *
26- from tkinter import filedialog , messagebox , simpledialog
2726except :
2827 from Tkinter import *
2928 from ttk import *
29+ if (sys .version_info > (3 , 0 )):
30+ from tkinter import filedialog , messagebox , simpledialog
31+ from tkinter import font
32+ else :
3033 import tkFileDialog as filedialog
3134 import tkSimpleDialog as simpledialog
3235 import tkMessageBox as messagebox
33- from tkinter import font
34- import Pmw
36+ import tkFont as font
37+
38+ #import Pmw
3539import re , os , time , pickle
3640from collections import OrderedDict
3741from .Custom import MyTable
@@ -161,6 +165,7 @@ def create_pulldown(self,menu,dict):
161165
162166 def createSearchBar (self , event = None ):
163167 """Add a find entry box"""
168+
164169 frame = Frame (self .tablesapp_win )
165170 row = 0
166171 def close ():
@@ -177,9 +182,9 @@ def close():
177182 frame .pack (fill = BOTH , expand = NO )
178183 return
179184
180-
181185 def loadprefs (self ):
182186 """Setup default prefs file if any of the keys are not present"""
187+
183188 defaultprefs = {'textsize' :14 ,
184189 'windowwidth' : 800 ,'windowheight' :600 }
185190 for prop in defaultprefs .keys ():
@@ -194,9 +199,9 @@ def showPrefsDialog(self):
194199 self .prefswindow = self .currenttable .showtablePrefs ()
195200 return
196201
197-
198202 def new_project (self , data = None ):
199203 """Create a new table, with model and add the frame"""
204+
200205 if hasattr (self ,'currenttable' ):
201206 self .notebook .destroy ()
202207 self .currenttable .destroy ()
@@ -219,21 +224,23 @@ def new_project(self, data=None):
219224 return
220225
221226 def open_project (self , filename = None ):
227+
222228 if filename == None :
223229 filename = filedialog .askopenfilename (defaultextension = '.tblprj"' ,
224230 initialdir = os .getcwd (),
225231 filetypes = [("TableApp project" ,"*.tblprj" ),
226232 ("All files" ,"*.*" )],
227233 parent = self .tablesapp_win )
228234 if os .path .isfile (filename ):
229- fd = open (filename )
230- data = pickle .load (fd )
235+ fd = open (filename , 'rb' )
236+ data = pickle .load (fd )
231237 fd .close ()
232238 self .new_project (data )
233239 self .filename = filename
234240 return
235241
236242 def save_project (self ):
243+
237244 if not hasattr (self , 'filename' ):
238245 self .save_as_project ()
239246 elif self .filename == None :
@@ -245,6 +252,7 @@ def save_project(self):
245252
246253 def save_as_project (self ):
247254 """Save as a new filename"""
255+
248256 filename = filedialog .asksaveasfilename (parent = self .tablesapp_win ,
249257 defaultextension = '.tblprj' ,
250258 initialdir = self .defaultsavedir ,
@@ -259,13 +267,14 @@ def save_as_project(self):
259267
260268 def do_save_project (self , filename ):
261269 """Get model dicts and write all to pickle file"""
270+
262271 data = {}
263272 for s in self .sheets .keys ():
264273 currtable = self .sheets [s ]
265274 model = currtable .getModel ()
266275 data [s ] = model .getData ()
267276
268- fd = open (filename ,'w ' )
277+ fd = open (filename ,'wb ' )
269278 pickle .dump (data ,fd )
270279 fd .close ()
271280 return
@@ -300,10 +309,10 @@ def add_Sheet(self, sheetname=None, sheetdata=None):
300309
301310 def checksheet_name (name ):
302311 if name == '' :
303- tkMessageBox .showwarning ("Whoops" , "Name should not be blank." )
312+ messagebox .showwarning ("Whoops" , "Name should not be blank." )
304313 return 0
305314 if name in self .sheets :
306- tkMessageBox .showwarning ("Name exists" , "Sheet name already exists!" )
315+ messagebox .showwarning ("Name exists" , "Sheet name already exists!" )
307316 return 0
308317 names = [self .notebook .tab (i , "text" ) for i in self .notebook .tabs ()]
309318 noshts = len (names )
@@ -331,13 +340,17 @@ def checksheet_name(name):
331340
332341 def delete_Sheet (self ):
333342 """Delete a sheet"""
334- s = self .notebook .getcurselection ()
335- self .notebook .delete (s )
343+
344+ s = self .notebook .index (self .notebook .select ())
345+ name = self .notebook .tab (s , 'text' )
346+ #self.notebook.delete(s)
347+ self .notebook .forget (s )
336348 del self .sheets [s ]
337349 return
338350
339351 def copy_Sheet (self , newname = None ):
340352 """Copy a sheet"""
353+
341354 newdata = self .currenttable .getModel ().getData ().copy ()
342355 if newname == None :
343356 self .add_Sheet (None , newdata )
@@ -347,7 +360,9 @@ def copy_Sheet(self, newname=None):
347360
348361 def rename_Sheet (self ):
349362 """Rename a sheet"""
350- s = self .notebook .getcurselection ()
363+
364+ #s = self.notebook.getcurselection()
365+ s = self .notebook .index (self .notebook .select ())
351366 newname = simpledialog .askstring ("New sheet name?" , "Enter new sheet name:" ,
352367 initialvalue = s )
353368 if newname == None :
@@ -358,8 +373,10 @@ def rename_Sheet(self):
358373
359374 def setcurrenttable (self , event ):
360375 """Set the currenttable so that menu items work with visible sheet"""
376+
361377 try :
362- s = self .notebook .getcurselection ()
378+ #s = self.notebook.getcurselection()
379+ s = self .notebook .index (self .notebook .select ())
363380 self .currenttable = self .sheets [s ]
364381 except :
365382 pass
@@ -373,30 +390,35 @@ def add_Row(self):
373390
374391 def delete_Row (self ):
375392 """Delete currently selected row"""
393+
376394 self .currenttable .deleteRow ()
377395 self .saved = 0
378396 return
379397
380398 def add_Column (self ):
381399 """Add a new column"""
400+
382401 self .currenttable .addColumn ()
383402 self .saved = 0
384403 return
385404
386405 def delete_Column (self ):
387406 """Delete currently selected column in table"""
388- self .currenttable .delete_Column ()
407+
408+ self .currenttable .deleteColumn ()
389409 self .saved = 0
390410 return
391411
392412 def autoAdd_Rows (self ):
393413 """Auto add x rows"""
414+
394415 self .currenttable .autoAddRows ()
395416 self .saved = 0
396417 return
397418
398419 def autoAdd_Columns (self ):
399420 """Auto add x rows"""
421+
400422 self .currenttable .autoAddColumns ()
401423 self .saved = 0
402424 return
@@ -407,6 +429,7 @@ def findValue(self):
407429
408430 def do_find_text (self , event = None ):
409431 """Find the text in the table"""
432+
410433 if not hasattr (self ,'currenttable' ):
411434 return
412435 import string
@@ -419,6 +442,7 @@ def do_find_text(self, event=None):
419442
420443 def do_find_again (self , event = None ):
421444 """Find again"""
445+
422446 if not hasattr (self ,'currenttable' ):
423447 return
424448 searchstring = self .findtext .get ()
@@ -435,6 +459,7 @@ def plotSetup(self, event=None):
435459 return
436460
437461 def about_Tables (self ):
462+
438463 self .ab_win = Toplevel ()
439464 self .ab_win .geometry ('+100+350' )
440465 self .ab_win .title ('About TablesApp' )
@@ -459,6 +484,7 @@ def about_Tables(self):
459484
460485 def online_documentation (self ,event = None ):
461486 """Open the online documentation"""
487+
462488 import webbrowser
463489 link = 'http://sourceforge.net/projects/tkintertable/'
464490 webbrowser .open (link ,autoraise = 1 )
@@ -471,6 +497,7 @@ def quit(self):
471497
472498class ToolBar (Frame ):
473499 """Uses the parent instance to provide the functions"""
500+
474501 def __init__ (self , parent = None , parentapp = None ):
475502 Frame .__init__ (self , parent , width = 600 , height = 40 )
476503 from . import Table_images
0 commit comments