mirror of
https://github.com/python/cpython.git
synced 2025-11-01 14:11:41 +00:00
Fixed several bugs reported by Greg McFarmane:
* The invoke methods of the three Tkinter widgets Button,
Checkbutton and Radiobutton should return the value returned by
the callback, (like the Menu widget does):
def invoke(self):
return self.tk.call(self._w, 'invoke')
* The select_from method of the Canvas widget should use 'from', not
'set':
def select_from(self, tagOrId, index):
self.tk.call(self._w, 'select', 'from', tagOrId, index)
Currently, if you use select_from, you get the error message:
'TclError: bad select option "set": must be adjust, clear, from, item, or to'
* The 'entrycget' and 'type' methods of the Tk menu widget are
missing from Tkinter.
* There is a bug in grid_columnconfigure and grid_rowconfigure. For
example, this should return the current value of the 'minsize'
option for column 0:
f.grid_columnconfigure(0, 'minsize')
Instead it returns the same as:
f.grid_columnconfigure(0)
I suggest that the hint given in the comment in the
Tkinter.Misc.configure method should be followed - "ought to
generalize this so tag_config etc. can use it". Repeating the
same configure code several times in Tkinter is inviting errors.
[I did not follow this advice --G]
* The grid_slaves method should handle options. Currently, to pass
options to the grid_slaves method, you have to do something like:
grid_slaves('-row', 1)
This commit is contained in:
parent
23e21e7cf3
commit
9fd41e363b
1 changed files with 31 additions and 42 deletions
|
|
@ -630,14 +630,18 @@ def grid_bbox(self, column, row):
|
|||
self.tk.call(
|
||||
'grid', 'bbox', self._w, column, row)) or None
|
||||
bbox = grid_bbox
|
||||
def grid_columnconfigure(self, index, cnf={}, **kw):
|
||||
if type(cnf) is not DictionaryType and not kw:
|
||||
options = self._options({cnf: None})
|
||||
def _grid_configure(self, command, index, cnf, kw):
|
||||
if type(cnf) is StringType and not kw:
|
||||
if cnf[-1:] == '_':
|
||||
cnf = cnf[:-1]
|
||||
if cnf[:1] != '-':
|
||||
cnf = '-'+cnf
|
||||
options = (cnf,)
|
||||
else:
|
||||
options = self._options(cnf, kw)
|
||||
if not options:
|
||||
res = self.tk.call('grid',
|
||||
'columnconfigure', self._w, index)
|
||||
command, self._w, index)
|
||||
words = self.tk.splitlist(res)
|
||||
dict = {}
|
||||
for i in range(0, len(words), 2):
|
||||
|
|
@ -652,12 +656,15 @@ def grid_columnconfigure(self, index, cnf={}, **kw):
|
|||
dict[key] = value
|
||||
return dict
|
||||
res = apply(self.tk.call,
|
||||
('grid', 'columnconfigure', self._w, index)
|
||||
('grid', command, self._w, index)
|
||||
+ options)
|
||||
if options == ('-minsize', None):
|
||||
return self.tk.getint(res) or None
|
||||
elif options == ('-weight', None):
|
||||
return self.tk.getdouble(res) or None
|
||||
if len(options) == 1:
|
||||
if not res: return None
|
||||
# In Tk 7.5, -width can be a float
|
||||
if '.' in res: return self.tk.getdouble(res)
|
||||
return self.tk.getint(res)
|
||||
def grid_columnconfigure(self, index, cnf={}, **kw):
|
||||
return self._grid_configure('columnconfigure', index, cnf, kw)
|
||||
columnconfigure = grid_columnconfigure
|
||||
def grid_propagate(self, flag=_noarg_):
|
||||
if flag is Misc._noarg_:
|
||||
|
|
@ -666,40 +673,18 @@ def grid_propagate(self, flag=_noarg_):
|
|||
else:
|
||||
self.tk.call('grid', 'propagate', self._w, flag)
|
||||
def grid_rowconfigure(self, index, cnf={}, **kw):
|
||||
if type(cnf) is not DictionaryType and not kw:
|
||||
options = self._options({cnf: None})
|
||||
else:
|
||||
options = self._options(cnf, kw)
|
||||
if not options:
|
||||
res = self.tk.call('grid',
|
||||
'rowconfigure', self._w, index)
|
||||
words = self.tk.splitlist(res)
|
||||
dict = {}
|
||||
for i in range(0, len(words), 2):
|
||||
key = words[i][1:]
|
||||
value = words[i+1]
|
||||
if not value:
|
||||
value = None
|
||||
elif '.' in value:
|
||||
value = self.tk.getdouble(value)
|
||||
else:
|
||||
value = self.tk.getint(value)
|
||||
dict[key] = value
|
||||
return dict
|
||||
res = apply(self.tk.call,
|
||||
('grid', 'rowconfigure', self._w, index)
|
||||
+ options)
|
||||
if len(options) == 2 and options[-1] is None:
|
||||
if not res: return None
|
||||
# In Tk 7.5, -width can be a float
|
||||
if '.' in res: return self.tk.getdouble(res)
|
||||
return self.tk.getint(res)
|
||||
return self._grid_configure('rowconfigure', index, cnf, kw)
|
||||
rowconfigure = grid_rowconfigure
|
||||
def grid_size(self):
|
||||
return self._getints(
|
||||
self.tk.call('grid', 'size', self._w)) or None
|
||||
size = grid_size
|
||||
def grid_slaves(self, *args):
|
||||
def grid_slaves(self, master, row=None, column=None):
|
||||
args = (master,)
|
||||
if row:
|
||||
args = args + ('-row', row)
|
||||
if column:
|
||||
args = args + ('-column', column)
|
||||
return map(self._nametowidget,
|
||||
self.tk.splitlist(
|
||||
apply(self.tk.call,
|
||||
|
|
@ -1085,7 +1070,7 @@ def tkButtonInvoke(self, *dummy):
|
|||
def flash(self):
|
||||
self.tk.call(self._w, 'flash')
|
||||
def invoke(self):
|
||||
self.tk.call(self._w, 'invoke')
|
||||
return self.tk.call(self._w, 'invoke')
|
||||
|
||||
# Indices:
|
||||
# XXX I don't like these -- take them away
|
||||
|
|
@ -1238,7 +1223,7 @@ def select_adjust(self, tagOrId, index):
|
|||
def select_clear(self):
|
||||
self.tk.call(self._w, 'select', 'clear')
|
||||
def select_from(self, tagOrId, index):
|
||||
self.tk.call(self._w, 'select', 'set', tagOrId, index)
|
||||
self.tk.call(self._w, 'select', 'from', tagOrId, index)
|
||||
def select_item(self):
|
||||
self.tk.call(self._w, 'select', 'item')
|
||||
def select_to(self, tagOrId, index):
|
||||
|
|
@ -1262,7 +1247,7 @@ def deselect(self):
|
|||
def flash(self):
|
||||
self.tk.call(self._w, 'flash')
|
||||
def invoke(self):
|
||||
self.tk.call(self._w, 'invoke')
|
||||
return self.tk.call(self._w, 'invoke')
|
||||
def select(self):
|
||||
self.tk.call(self._w, 'select')
|
||||
def toggle(self):
|
||||
|
|
@ -1445,6 +1430,8 @@ def insert_separator(self, index, cnf={}, **kw):
|
|||
self.insert(index, 'separator', cnf or kw)
|
||||
def delete(self, index1, index2=None):
|
||||
self.tk.call(self._w, 'delete', index1, index2)
|
||||
def entrycget(self, index, option):
|
||||
return self.tk.call(self._w, 'entrycget', '-' + option)
|
||||
def entryconfigure(self, index, cnf=None, **kw):
|
||||
if cnf is None and not kw:
|
||||
cnf = {}
|
||||
|
|
@ -1467,6 +1454,8 @@ def invoke(self, index):
|
|||
return self.tk.call(self._w, 'invoke', index)
|
||||
def post(self, x, y):
|
||||
self.tk.call(self._w, 'post', x, y)
|
||||
def type(self, index):
|
||||
return self.tk.call(self._w, 'type', index)
|
||||
def unpost(self):
|
||||
self.tk.call(self._w, 'unpost')
|
||||
def yposition(self, index):
|
||||
|
|
@ -1489,7 +1478,7 @@ def deselect(self):
|
|||
def flash(self):
|
||||
self.tk.call(self._w, 'flash')
|
||||
def invoke(self):
|
||||
self.tk.call(self._w, 'invoke')
|
||||
return self.tk.call(self._w, 'invoke')
|
||||
def select(self):
|
||||
self.tk.call(self._w, 'select')
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue