[Python-checkins] r64657 - sandbox/trunk/ttk-gsoc/samples/theming.py

guilherme.polo python-checkins at python.org
Wed Jul 2 15:10:54 CEST 2008


Author: guilherme.polo
Date: Wed Jul 2 15:10:53 2008
New Revision: 64657
Log:
Renamed _current_options to _custom_options as it only stores custom options
per widget now.
Modified:
 sandbox/trunk/ttk-gsoc/samples/theming.py
Modified: sandbox/trunk/ttk-gsoc/samples/theming.py
==============================================================================
--- sandbox/trunk/ttk-gsoc/samples/theming.py	(original)
+++ sandbox/trunk/ttk-gsoc/samples/theming.py	Wed Jul 2 15:10:53 2008
@@ -16,7 +16,7 @@
 import cStringIO
 import Tkinter
 from tkSimpleDialog import Dialog, askstring
-from tkMessageBox import showwarning
+from tkMessageBox import showwarning, showerror
 from tkFileDialog import askopenfilename
 
 def map_widgets():
@@ -95,10 +95,8 @@
 def widget_notebook(widget, master, **kw):
 """Create a sample notebook with 2 tabs."""
 w = widget(master, **kw)
- t1 = ttk.Frame(w, width=150, height=150)
- t2 = ttk.Frame(w, width=150, height=150)
- w.add(t1, text="Tab 1")
- w.add(t2, text="Tab 2")
+ w.add(ttk.Frame(w, width=150, height=150), text="Tab 1")
+ w.add(ttk.Frame(w, width=150, height=150), text="Tab 2")
 return w
 
 def widget_treeview(widget, master, **kw):
@@ -106,7 +104,7 @@
 w = widget(master, columns=[0, 1], **kw)
 w.column('#0', width=70)
 for i in range(2):
- w.column(i, width=40, )
+ w.column(i, width=40)
 w.heading(i, text=i)
 w.insert('', 'end', text="Row %d" % i, values=[i, i + 1])
 return w
@@ -120,11 +118,9 @@
 
 def widget_paned(widget, master, **kw):
 """Create a sample Panedwindow with two children."""
- w = widget(master, height=150, **kw)
- c1 = ttk.Label(w, text="Top")
- c2 = ttk.Label(w, text="Bottom")
- w.add(c1)
- w.add(c2)
+ w = widget(master, height=150, orient='vertical', **kw)
+ w.add(ttk.Label(w, text="Top"))
+ w.add(ttk.Label(w, text="Bottom"))
 return w
 
 def widget_expand(widget, master, **kw):
@@ -303,7 +299,7 @@
 else:
 self.result = Tkinter.PhotoImage(name=img_name, file=img_path)
 except Tkinter.TclError, err:
- showwarning("Error creating image", err, parent=self)
+ showerror("Error creating image", err, parent=self)
 return False
 
 return True
@@ -380,13 +376,13 @@
 if not isinstance(values['opts'], dict):
 raise ValueError
 except (NameError, SyntaxError), err:
- showwarning("Invalid options specification",
+ showerror("Invalid options specification",
 "Options should be formatted according to a dict.\n\n"
 "Error: %s" % err,
 parent=self)
 return False
 except ValueError:
- showwarning("Invalid options specification",
+ showerror("Invalid options specification",
 "Options should be formatted according to a dict.",
 parent=self)
 return False
@@ -403,14 +399,14 @@
 self.master = frame.master
 
 width = 640
- height = width - 50#int(width * 3 / 4)
+ height = width - 50
 self.master.geometry('%dx%d' % (width, height))
 self.master.minsize(width, height)
 self.master.title(title)
 
 self._style = ttk.Style(self.master)
 self._current_widget = {'layout': None, 'widget': None}
- self._current_options = None
+ self._custom_options = {} # custom options per widget
 
 self.__create_menu()
 self.__setup_widgets()
@@ -437,7 +433,7 @@
 widget_style = "Custom.%s" % widget_name
 widget_name = treeview.item(treeview.parent(sel))['text']
 else:
- self._empty_layout_text()
+ self._empty_layout()
 
 widget = self._widget[widget_name]
 widget_style = widget_style or widget['class']
@@ -473,12 +469,13 @@
 self._widget[name]['tv_item'] != selection)
 
 def _remove_previous_widgets(self):
- """Remove widgets from the style frames."""
- self._current_options = self._current_options or []
- # remove previous widgets
- for widget in self._current_options:
+ """Remove labels and entries from the style frames."""
+ widgets = self._configframe.pack_slaves() + self._mapframe.pack_slaves()
+
+ for widget in widgets:
+ if widget.winfo_class() == 'TButton':
+ continue
 widget.pack_forget()
- self._current_options = []
 
 def _update_style_configframe(self):
 """Update the configure frame for the current widget."""
@@ -522,21 +519,18 @@
 entry.validate()
 entry.pack(side='top', fill='x', pady=3)
 
- self._current_options = self._current_options or []
- self._current_options.extend([lbl, entry])
-
 def _update_layout_text(self, layout_name):
 """Update the layout text for the current widget."""
 output = cStringIO.StringIO()
 pprint.pprint(self._style.layout(layout_name), stream=output)
 layout = output.getvalue()
 output.close()
- self._empty_layout_text()
+ self._empty_layout()
 self.layouttext.layout = layout_name
 self.layouttext.insert('1.0', layout) # set new text
 
- def _empty_layout_text(self):
- """Clear current text in the layout text widget."""
+ def _empty_layout(self):
+ """Clear current text in the layout text widget and unset layout."""
 self.layouttext.delete('1.0', 'end')
 self.layouttext.layout = None
 
@@ -547,7 +541,7 @@
 return
 
 text = self.layouttext.get('1.0', 'end')
- if not text.strip(): # no text
+ if not text.strip(): # no layout
 return
 # XXX Warning: eval usage!
 self._style.layout(layout, eval(text))
@@ -563,7 +557,7 @@
 
 def _ask_new_frame_opt(self, frame, func):
 """Open a dialog asking for a new option to be added in the
- specified frame."""
+ specified frame and then add it."""
 widget = self._current_widget
 if widget['widget'] is None:
 showwarning("No widget active",
@@ -575,10 +569,16 @@
 dlg = NewOption(self.master)
 if dlg.result is not None:
 option, value = dlg.result
+
+ if layout_name not in self._custom_options:
+ self._custom_options[layout_name] = []
+
+ self._custom_options[layout_name].append(option)
 self._add_opt_frame(frame, func, layout_name, option, value)
 
 def _ask_new_element(self, frame):
- """Open a dialog for getting data for a new style element."""
+ """Open a dialog for getting data for a new style element and then
+ create it."""
 dlg = NewElement(self.master, imglist=self._imagelist)
 if dlg.result:
 name = dlg.result['elementname']
@@ -598,7 +598,7 @@
 self._style.element_create(name, dlg.result['etype'], *args,
 **dlg.result['opts'])
 except Tkinter.TclError, err:
- showwarning("Element couldn't be created",
+ showerror("Element couldn't be created",
 "The specified element couldn'be created, reason: "
 "\n%s" % err, parent=self.master)
 else:


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /