Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
cpython
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
cpython
Commits
c4570487
Commit
c4570487
authored
Mar 20, 1998
by
Guido van Rossum
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Give in to the tab police.
parent
6f73c1a2
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
295 additions
and
285 deletions
+295
-285
Lib/lib-tk/Canvas.py
Lib/lib-tk/Canvas.py
+18
-18
Lib/lib-tk/FileDialog.py
Lib/lib-tk/FileDialog.py
+163
-163
Lib/lib-tk/SimpleDialog.py
Lib/lib-tk/SimpleDialog.py
+78
-78
Lib/lib-tk/Tkinter.py
Lib/lib-tk/Tkinter.py
+27
-17
Lib/lib-tk/tkCommonDialog.py
Lib/lib-tk/tkCommonDialog.py
+3
-3
Lib/lib-tk/tkFileDialog.py
Lib/lib-tk/tkFileDialog.py
+6
-6
No files found.
Lib/lib-tk/Canvas.py
View file @
c4570487
...
...
@@ -78,41 +78,41 @@ class CanvasItem:
return
self
.
canvas
.
type
(
self
.
id
)
class
Arc
(
CanvasItem
):
def
__init__
(
self
,
canvas
,
*
args
,
**
kw
):
apply
(
CanvasItem
.
__init__
,
(
self
,
canvas
,
'arc'
)
+
args
,
kw
)
def
__init__
(
self
,
canvas
,
*
args
,
**
kw
):
apply
(
CanvasItem
.
__init__
,
(
self
,
canvas
,
'arc'
)
+
args
,
kw
)
class
Bitmap
(
CanvasItem
):
def
__init__
(
self
,
canvas
,
*
args
,
**
kw
):
apply
(
CanvasItem
.
__init__
,
(
self
,
canvas
,
'bitmap'
)
+
args
,
kw
)
def
__init__
(
self
,
canvas
,
*
args
,
**
kw
):
apply
(
CanvasItem
.
__init__
,
(
self
,
canvas
,
'bitmap'
)
+
args
,
kw
)
class
ImageItem
(
CanvasItem
):
def
__init__
(
self
,
canvas
,
*
args
,
**
kw
):
apply
(
CanvasItem
.
__init__
,
(
self
,
canvas
,
'image'
)
+
args
,
kw
)
def
__init__
(
self
,
canvas
,
*
args
,
**
kw
):
apply
(
CanvasItem
.
__init__
,
(
self
,
canvas
,
'image'
)
+
args
,
kw
)
class
Line
(
CanvasItem
):
def
__init__
(
self
,
canvas
,
*
args
,
**
kw
):
apply
(
CanvasItem
.
__init__
,
(
self
,
canvas
,
'line'
)
+
args
,
kw
)
def
__init__
(
self
,
canvas
,
*
args
,
**
kw
):
apply
(
CanvasItem
.
__init__
,
(
self
,
canvas
,
'line'
)
+
args
,
kw
)
class
Oval
(
CanvasItem
):
def
__init__
(
self
,
canvas
,
*
args
,
**
kw
):
apply
(
CanvasItem
.
__init__
,
(
self
,
canvas
,
'oval'
)
+
args
,
kw
)
def
__init__
(
self
,
canvas
,
*
args
,
**
kw
):
apply
(
CanvasItem
.
__init__
,
(
self
,
canvas
,
'oval'
)
+
args
,
kw
)
class
Polygon
(
CanvasItem
):
def
__init__
(
self
,
canvas
,
*
args
,
**
kw
):
apply
(
CanvasItem
.
__init__
,
(
self
,
canvas
,
'polygon'
)
+
args
,
kw
)
def
__init__
(
self
,
canvas
,
*
args
,
**
kw
):
apply
(
CanvasItem
.
__init__
,
(
self
,
canvas
,
'polygon'
)
+
args
,
kw
)
class
Rectangle
(
CanvasItem
):
def
__init__
(
self
,
canvas
,
*
args
,
**
kw
):
apply
(
CanvasItem
.
__init__
,
(
self
,
canvas
,
'rectangle'
)
+
args
,
kw
)
def
__init__
(
self
,
canvas
,
*
args
,
**
kw
):
apply
(
CanvasItem
.
__init__
,
(
self
,
canvas
,
'rectangle'
)
+
args
,
kw
)
# XXX "Text" is taken by the Text widget...
class
CanvasText
(
CanvasItem
):
def
__init__
(
self
,
canvas
,
*
args
,
**
kw
):
apply
(
CanvasItem
.
__init__
,
(
self
,
canvas
,
'text'
)
+
args
,
kw
)
def
__init__
(
self
,
canvas
,
*
args
,
**
kw
):
apply
(
CanvasItem
.
__init__
,
(
self
,
canvas
,
'text'
)
+
args
,
kw
)
class
Window
(
CanvasItem
):
def
__init__
(
self
,
canvas
,
*
args
,
**
kw
):
apply
(
CanvasItem
.
__init__
,
(
self
,
canvas
,
'window'
)
+
args
,
kw
)
def
__init__
(
self
,
canvas
,
*
args
,
**
kw
):
apply
(
CanvasItem
.
__init__
,
(
self
,
canvas
,
'window'
)
+
args
,
kw
)
class
Group
:
def
__init__
(
self
,
canvas
,
tag
=
None
):
...
...
Lib/lib-tk/FileDialog.py
View file @
c4570487
...
...
@@ -27,7 +27,7 @@ class FileDialog:
d = FileDialog(master)
file = d.go(dir_or_file, pattern, default, key)
if file is None: ...canceled...
else: ...open file...
else: ...open file...
All arguments to go() are optional.
...
...
@@ -44,172 +44,172 @@ class FileDialog:
title
=
"File Selection Dialog"
def
__init__
(
self
,
master
,
title
=
None
):
if
title
is
None
:
title
=
self
.
title
self
.
master
=
master
self
.
directory
=
None
self
.
top
=
Toplevel
(
master
)
self
.
top
.
title
(
title
)
self
.
top
.
iconname
(
title
)
self
.
botframe
=
Frame
(
self
.
top
)
self
.
botframe
.
pack
(
side
=
BOTTOM
,
fill
=
X
)
self
.
selection
=
Entry
(
self
.
top
)
self
.
selection
.
pack
(
side
=
BOTTOM
,
fill
=
X
)
self
.
selection
.
bind
(
'<Return>'
,
self
.
ok_event
)
self
.
filter
=
Entry
(
self
.
top
)
self
.
filter
.
pack
(
side
=
TOP
,
fill
=
X
)
self
.
filter
.
bind
(
'<Return>'
,
self
.
filter_command
)
self
.
midframe
=
Frame
(
self
.
top
)
self
.
midframe
.
pack
(
expand
=
YES
,
fill
=
BOTH
)
self
.
filesbar
=
Scrollbar
(
self
.
midframe
)
self
.
filesbar
.
pack
(
side
=
RIGHT
,
fill
=
Y
)
self
.
files
=
Listbox
(
self
.
midframe
,
exportselection
=
0
,
yscrollcommand
=
(
self
.
filesbar
,
'set'
))
self
.
files
.
pack
(
side
=
RIGHT
,
expand
=
YES
,
fill
=
BOTH
)
btags
=
self
.
files
.
bindtags
()
self
.
files
.
bindtags
(
btags
[
1
:]
+
btags
[:
1
])
self
.
files
.
bind
(
'<ButtonRelease-1>'
,
self
.
files_select_event
)
self
.
files
.
bind
(
'<Double-ButtonRelease-1>'
,
self
.
files_double_event
)
self
.
filesbar
.
config
(
command
=
(
self
.
files
,
'yview'
))
self
.
dirsbar
=
Scrollbar
(
self
.
midframe
)
self
.
dirsbar
.
pack
(
side
=
LEFT
,
fill
=
Y
)
self
.
dirs
=
Listbox
(
self
.
midframe
,
exportselection
=
0
,
yscrollcommand
=
(
self
.
dirsbar
,
'set'
))
self
.
dirs
.
pack
(
side
=
LEFT
,
expand
=
YES
,
fill
=
BOTH
)
self
.
dirsbar
.
config
(
command
=
(
self
.
dirs
,
'yview'
))
btags
=
self
.
dirs
.
bindtags
()
self
.
dirs
.
bindtags
(
btags
[
1
:]
+
btags
[:
1
])
self
.
dirs
.
bind
(
'<ButtonRelease-1>'
,
self
.
dirs_select_event
)
self
.
dirs
.
bind
(
'<Double-ButtonRelease-1>'
,
self
.
dirs_double_event
)
self
.
ok_button
=
Button
(
self
.
botframe
,
text
=
"OK"
,
command
=
self
.
ok_command
)
self
.
ok_button
.
pack
(
side
=
LEFT
)
self
.
filter_button
=
Button
(
self
.
botframe
,
text
=
"Filter"
,
command
=
self
.
filter_command
)
self
.
filter_button
.
pack
(
side
=
LEFT
,
expand
=
YES
)
self
.
cancel_button
=
Button
(
self
.
botframe
,
text
=
"Cancel"
,
command
=
self
.
cancel_command
)
self
.
cancel_button
.
pack
(
side
=
RIGHT
)
self
.
top
.
protocol
(
'WM_DELETE_WINDOW'
,
self
.
cancel_command
)
# XXX Are the following okay for a general audience?
self
.
top
.
bind
(
'<Alt-w>'
,
self
.
cancel_command
)
self
.
top
.
bind
(
'<Alt-W>'
,
self
.
cancel_command
)
if
title
is
None
:
title
=
self
.
title
self
.
master
=
master
self
.
directory
=
None
self
.
top
=
Toplevel
(
master
)
self
.
top
.
title
(
title
)
self
.
top
.
iconname
(
title
)
self
.
botframe
=
Frame
(
self
.
top
)
self
.
botframe
.
pack
(
side
=
BOTTOM
,
fill
=
X
)
self
.
selection
=
Entry
(
self
.
top
)
self
.
selection
.
pack
(
side
=
BOTTOM
,
fill
=
X
)
self
.
selection
.
bind
(
'<Return>'
,
self
.
ok_event
)
self
.
filter
=
Entry
(
self
.
top
)
self
.
filter
.
pack
(
side
=
TOP
,
fill
=
X
)
self
.
filter
.
bind
(
'<Return>'
,
self
.
filter_command
)
self
.
midframe
=
Frame
(
self
.
top
)
self
.
midframe
.
pack
(
expand
=
YES
,
fill
=
BOTH
)
self
.
filesbar
=
Scrollbar
(
self
.
midframe
)
self
.
filesbar
.
pack
(
side
=
RIGHT
,
fill
=
Y
)
self
.
files
=
Listbox
(
self
.
midframe
,
exportselection
=
0
,
yscrollcommand
=
(
self
.
filesbar
,
'set'
))
self
.
files
.
pack
(
side
=
RIGHT
,
expand
=
YES
,
fill
=
BOTH
)
btags
=
self
.
files
.
bindtags
()
self
.
files
.
bindtags
(
btags
[
1
:]
+
btags
[:
1
])
self
.
files
.
bind
(
'<ButtonRelease-1>'
,
self
.
files_select_event
)
self
.
files
.
bind
(
'<Double-ButtonRelease-1>'
,
self
.
files_double_event
)
self
.
filesbar
.
config
(
command
=
(
self
.
files
,
'yview'
))
self
.
dirsbar
=
Scrollbar
(
self
.
midframe
)
self
.
dirsbar
.
pack
(
side
=
LEFT
,
fill
=
Y
)
self
.
dirs
=
Listbox
(
self
.
midframe
,
exportselection
=
0
,
yscrollcommand
=
(
self
.
dirsbar
,
'set'
))
self
.
dirs
.
pack
(
side
=
LEFT
,
expand
=
YES
,
fill
=
BOTH
)
self
.
dirsbar
.
config
(
command
=
(
self
.
dirs
,
'yview'
))
btags
=
self
.
dirs
.
bindtags
()
self
.
dirs
.
bindtags
(
btags
[
1
:]
+
btags
[:
1
])
self
.
dirs
.
bind
(
'<ButtonRelease-1>'
,
self
.
dirs_select_event
)
self
.
dirs
.
bind
(
'<Double-ButtonRelease-1>'
,
self
.
dirs_double_event
)
self
.
ok_button
=
Button
(
self
.
botframe
,
text
=
"OK"
,
command
=
self
.
ok_command
)
self
.
ok_button
.
pack
(
side
=
LEFT
)
self
.
filter_button
=
Button
(
self
.
botframe
,
text
=
"Filter"
,
command
=
self
.
filter_command
)
self
.
filter_button
.
pack
(
side
=
LEFT
,
expand
=
YES
)
self
.
cancel_button
=
Button
(
self
.
botframe
,
text
=
"Cancel"
,
command
=
self
.
cancel_command
)
self
.
cancel_button
.
pack
(
side
=
RIGHT
)
self
.
top
.
protocol
(
'WM_DELETE_WINDOW'
,
self
.
cancel_command
)
# XXX Are the following okay for a general audience?
self
.
top
.
bind
(
'<Alt-w>'
,
self
.
cancel_command
)
self
.
top
.
bind
(
'<Alt-W>'
,
self
.
cancel_command
)
def
go
(
self
,
dir_or_file
=
os
.
curdir
,
pattern
=
"*"
,
default
=
""
,
key
=
None
):
if
key
and
dialogstates
.
has_key
(
key
):
self
.
directory
,
pattern
=
dialogstates
[
key
]
else
:
dir_or_file
=
os
.
path
.
expanduser
(
dir_or_file
)
if
os
.
path
.
isdir
(
dir_or_file
):
self
.
directory
=
dir_or_file
else
:
self
.
directory
,
default
=
os
.
path
.
split
(
dir_or_file
)
self
.
set_filter
(
self
.
directory
,
pattern
)
self
.
set_selection
(
default
)
self
.
filter_command
()
self
.
selection
.
focus_set
()
self
.
top
.
grab_set
()
self
.
how
=
None
self
.
master
.
mainloop
()
# Exited by self.quit(how)
if
key
:
dialogstates
[
key
]
=
self
.
get_filter
()
self
.
top
.
destroy
()
return
self
.
how
if
key
and
dialogstates
.
has_key
(
key
):
self
.
directory
,
pattern
=
dialogstates
[
key
]
else
:
dir_or_file
=
os
.
path
.
expanduser
(
dir_or_file
)
if
os
.
path
.
isdir
(
dir_or_file
):
self
.
directory
=
dir_or_file
else
:
self
.
directory
,
default
=
os
.
path
.
split
(
dir_or_file
)
self
.
set_filter
(
self
.
directory
,
pattern
)
self
.
set_selection
(
default
)
self
.
filter_command
()
self
.
selection
.
focus_set
()
self
.
top
.
grab_set
()
self
.
how
=
None
self
.
master
.
mainloop
()
# Exited by self.quit(how)
if
key
:
dialogstates
[
key
]
=
self
.
get_filter
()
self
.
top
.
destroy
()
return
self
.
how
def
quit
(
self
,
how
=
None
):
self
.
how
=
how
self
.
master
.
quit
()
# Exit mainloop()
self
.
how
=
how
self
.
master
.
quit
()
# Exit mainloop()
def
dirs_double_event
(
self
,
event
):
self
.
filter_command
()
self
.
filter_command
()
def
dirs_select_event
(
self
,
event
):
dir
,
pat
=
self
.
get_filter
()
subdir
=
self
.
dirs
.
get
(
'active'
)
dir
=
os
.
path
.
normpath
(
os
.
path
.
join
(
self
.
directory
,
subdir
))
self
.
set_filter
(
dir
,
pat
)
dir
,
pat
=
self
.
get_filter
()
subdir
=
self
.
dirs
.
get
(
'active'
)
dir
=
os
.
path
.
normpath
(
os
.
path
.
join
(
self
.
directory
,
subdir
))
self
.
set_filter
(
dir
,
pat
)
def
files_double_event
(
self
,
event
):
self
.
ok_command
()
self
.
ok_command
()
def
files_select_event
(
self
,
event
):
file
=
self
.
files
.
get
(
'active'
)
self
.
set_selection
(
file
)
file
=
self
.
files
.
get
(
'active'
)
self
.
set_selection
(
file
)
def
ok_event
(
self
,
event
):
self
.
ok_command
()
self
.
ok_command
()
def
ok_command
(
self
):
self
.
quit
(
self
.
get_selection
())
self
.
quit
(
self
.
get_selection
())
def
filter_command
(
self
,
event
=
None
):
dir
,
pat
=
self
.
get_filter
()
try
:
names
=
os
.
listdir
(
dir
)
except
os
.
error
:
self
.
master
.
bell
()
return
self
.
directory
=
dir
self
.
set_filter
(
dir
,
pat
)
names
.
sort
()
subdirs
=
[
os
.
pardir
]
matchingfiles
=
[]
for
name
in
names
:
fullname
=
os
.
path
.
join
(
dir
,
name
)
if
os
.
path
.
isdir
(
fullname
):
subdirs
.
append
(
name
)
elif
fnmatch
.
fnmatch
(
name
,
pat
):
matchingfiles
.
append
(
name
)
self
.
dirs
.
delete
(
0
,
END
)
for
name
in
subdirs
:
self
.
dirs
.
insert
(
END
,
name
)
self
.
files
.
delete
(
0
,
END
)
for
name
in
matchingfiles
:
self
.
files
.
insert
(
END
,
name
)
head
,
tail
=
os
.
path
.
split
(
self
.
get_selection
())
if
tail
==
os
.
curdir
:
tail
=
''
self
.
set_selection
(
tail
)
dir
,
pat
=
self
.
get_filter
()
try
:
names
=
os
.
listdir
(
dir
)
except
os
.
error
:
self
.
master
.
bell
()
return
self
.
directory
=
dir
self
.
set_filter
(
dir
,
pat
)
names
.
sort
()
subdirs
=
[
os
.
pardir
]
matchingfiles
=
[]
for
name
in
names
:
fullname
=
os
.
path
.
join
(
dir
,
name
)
if
os
.
path
.
isdir
(
fullname
):
subdirs
.
append
(
name
)
elif
fnmatch
.
fnmatch
(
name
,
pat
):
matchingfiles
.
append
(
name
)
self
.
dirs
.
delete
(
0
,
END
)
for
name
in
subdirs
:
self
.
dirs
.
insert
(
END
,
name
)
self
.
files
.
delete
(
0
,
END
)
for
name
in
matchingfiles
:
self
.
files
.
insert
(
END
,
name
)
head
,
tail
=
os
.
path
.
split
(
self
.
get_selection
())
if
tail
==
os
.
curdir
:
tail
=
''
self
.
set_selection
(
tail
)
def
get_filter
(
self
):
filter
=
self
.
filter
.
get
()
filter
=
os
.
path
.
expanduser
(
filter
)
if
filter
[
-
1
:]
==
os
.
sep
or
os
.
path
.
isdir
(
filter
):
filter
=
os
.
path
.
join
(
filter
,
"*"
)
return
os
.
path
.
split
(
filter
)
filter
=
self
.
filter
.
get
()
filter
=
os
.
path
.
expanduser
(
filter
)
if
filter
[
-
1
:]
==
os
.
sep
or
os
.
path
.
isdir
(
filter
):
filter
=
os
.
path
.
join
(
filter
,
"*"
)
return
os
.
path
.
split
(
filter
)
def
get_selection
(
self
):
file
=
self
.
selection
.
get
()
file
=
os
.
path
.
expanduser
(
file
)
return
file
file
=
self
.
selection
.
get
()
file
=
os
.
path
.
expanduser
(
file
)
return
file
def
cancel_command
(
self
,
event
=
None
):
self
.
quit
()
self
.
quit
()
def
set_filter
(
self
,
dir
,
pat
):
if
not
os
.
path
.
isabs
(
dir
):
try
:
pwd
=
os
.
getcwd
()
except
os
.
error
:
pwd
=
None
if
pwd
:
dir
=
os
.
path
.
join
(
pwd
,
dir
)
dir
=
os
.
path
.
normpath
(
dir
)
self
.
filter
.
delete
(
0
,
END
)
self
.
filter
.
insert
(
END
,
os
.
path
.
join
(
dir
or
os
.
curdir
,
pat
or
"*"
))
if
not
os
.
path
.
isabs
(
dir
):
try
:
pwd
=
os
.
getcwd
()
except
os
.
error
:
pwd
=
None
if
pwd
:
dir
=
os
.
path
.
join
(
pwd
,
dir
)
dir
=
os
.
path
.
normpath
(
dir
)
self
.
filter
.
delete
(
0
,
END
)
self
.
filter
.
insert
(
END
,
os
.
path
.
join
(
dir
or
os
.
curdir
,
pat
or
"*"
))
def
set_selection
(
self
,
file
):
self
.
selection
.
delete
(
0
,
END
)
self
.
selection
.
insert
(
END
,
os
.
path
.
join
(
self
.
directory
,
file
))
self
.
selection
.
delete
(
0
,
END
)
self
.
selection
.
insert
(
END
,
os
.
path
.
join
(
self
.
directory
,
file
))
class
LoadFileDialog
(
FileDialog
):
...
...
@@ -219,11 +219,11 @@ class LoadFileDialog(FileDialog):
title
=
"Load File Selection Dialog"
def
ok_command
(
self
):
file
=
self
.
get_selection
()
if
not
os
.
path
.
isfile
(
file
):
self
.
master
.
bell
()
else
:
self
.
quit
(
file
)
file
=
self
.
get_selection
()
if
not
os
.
path
.
isfile
(
file
):
self
.
master
.
bell
()
else
:
self
.
quit
(
file
)
class
SaveFileDialog
(
FileDialog
):
...
...
@@ -233,25 +233,25 @@ class SaveFileDialog(FileDialog):
title
=
"Save File Selection Dialog"
def
ok_command
(
self
):
file
=
self
.
get_selection
()
if
os
.
path
.
exists
(
file
):
if
os
.
path
.
isdir
(
file
):
self
.
master
.
bell
()
return
d
=
Dialog
(
self
.
top
,
title
=
"Overwrite Existing File Question"
,
text
=
"Overwrite existing file %s?"
%
`file`
,
bitmap
=
'questhead'
,
default
=
1
,
strings
=
(
"Yes"
,
"Cancel"
))
if
d
.
num
!=
0
:
return
else
:
head
,
tail
=
os
.
path
.
split
(
file
)
if
not
os
.
path
.
isdir
(
head
):
self
.
master
.
bell
()
return
self
.
quit
(
file
)
file
=
self
.
get_selection
()
if
os
.
path
.
exists
(
file
):
if
os
.
path
.
isdir
(
file
):
self
.
master
.
bell
()
return
d
=
Dialog
(
self
.
top
,
title
=
"Overwrite Existing File Question"
,
text
=
"Overwrite existing file %s?"
%
`file`
,
bitmap
=
'questhead'
,
default
=
1
,
strings
=
(
"Yes"
,
"Cancel"
))
if
d
.
num
!=
0
:
return
else
:
head
,
tail
=
os
.
path
.
split
(
file
)
if
not
os
.
path
.
isdir
(
head
):
self
.
master
.
bell
()
return
self
.
quit
(
file
)
def
test
():
...
...
Lib/lib-tk/SimpleDialog.py
View file @
c4570487
...
...
@@ -7,99 +7,99 @@ from Tkinter import *
class
SimpleDialog
:
def
__init__
(
self
,
master
,
text
=
''
,
buttons
=
[],
default
=
None
,
cancel
=
None
,
title
=
None
,
class_
=
None
):
if
class_
:
self
.
root
=
Toplevel
(
master
,
class_
=
class_
)
else
:
self
.
root
=
Toplevel
(
master
)
if
title
:
self
.
root
.
title
(
title
)
self
.
root
.
iconname
(
title
)
self
.
message
=
Message
(
self
.
root
,
text
=
text
,
aspect
=
400
)
self
.
message
.
pack
(
expand
=
1
,
fill
=
BOTH
)
self
.
frame
=
Frame
(
self
.
root
)
self
.
frame
.
pack
()
self
.
num
=
default
self
.
cancel
=
cancel
self
.
default
=
default
self
.
root
.
bind
(
'<Return>'
,
self
.
return_event
)
for
num
in
range
(
len
(
buttons
)):
s
=
buttons
[
num
]
b
=
Button
(
self
.
frame
,
text
=
s
,
command
=
(
lambda
self
=
self
,
num
=
num
:
self
.
done
(
num
)))
if
num
==
default
:
b
.
config
(
relief
=
RIDGE
,
borderwidth
=
8
)
b
.
pack
(
side
=
LEFT
,
fill
=
BOTH
,
expand
=
1
)
self
.
root
.
protocol
(
'WM_DELETE_WINDOW'
,
self
.
wm_delete_window
)
self
.
_set_transient
(
master
)
text
=
''
,
buttons
=
[],
default
=
None
,
cancel
=
None
,
title
=
None
,
class_
=
None
):
if
class_
:
self
.
root
=
Toplevel
(
master
,
class_
=
class_
)
else
:
self
.
root
=
Toplevel
(
master
)
if
title
:
self
.
root
.
title
(
title
)
self
.
root
.
iconname
(
title
)
self
.
message
=
Message
(
self
.
root
,
text
=
text
,
aspect
=
400
)
self
.
message
.
pack
(
expand
=
1
,
fill
=
BOTH
)
self
.
frame
=
Frame
(
self
.
root
)
self
.
frame
.
pack
()
self
.
num
=
default
self
.
cancel
=
cancel
self
.
default
=
default
self
.
root
.
bind
(
'<Return>'
,
self
.
return_event
)
for
num
in
range
(
len
(
buttons
)):
s
=
buttons
[
num
]
b
=
Button
(
self
.
frame
,
text
=
s
,
command
=
(
lambda
self
=
self
,
num
=
num
:
self
.
done
(
num
)))
if
num
==
default
:
b
.
config
(
relief
=
RIDGE
,
borderwidth
=
8
)
b
.
pack
(
side
=
LEFT
,
fill
=
BOTH
,
expand
=
1
)
self
.
root
.
protocol
(
'WM_DELETE_WINDOW'
,
self
.
wm_delete_window
)
self
.
_set_transient
(
master
)
def
_set_transient
(
self
,
master
,
relx
=
0.5
,
rely
=
0.3
):
widget
=
self
.
root
widget
.
withdraw
()
# Remain invisible while we figure out the geometry
widget
.
transient
(
master
)
widget
.
update_idletasks
()
# Actualize geometry information
if
master
.
winfo_ismapped
():
m_width
=
master
.
winfo_width
()
m_height
=
master
.
winfo_height
()
m_x
=
master
.
winfo_rootx
()
m_y
=
master
.
winfo_rooty
()
else
:
m_width
=
master
.
winfo_screenwidth
()
m_height
=
master
.
winfo_screenheight
()
m_x
=
m_y
=
0
w_width
=
widget
.
winfo_reqwidth
()
w_height
=
widget
.
winfo_reqheight
()
x
=
m_x
+
(
m_width
-
w_width
)
*
relx
y
=
m_y
+
(
m_height
-
w_height
)
*
rely
if
x
+
w_width
>
master
.
winfo_screenwidth
():
x
=
master
.
winfo_screenwidth
()
-
w_width
elif
x
<
0
:
x
=
0
if
y
+
w_height
>
master
.
winfo_screenheight
():
y
=
master
.
winfo_screenheight
()
-
w_height
elif
y
<
0
:
y
=
0
widget
.
geometry
(
"+%d+%d"
%
(
x
,
y
))
widget
.
deiconify
()
# Become visible at the desired location
widget
=
self
.
root
widget
.
withdraw
()
# Remain invisible while we figure out the geometry
widget
.
transient
(
master
)
widget
.
update_idletasks
()
# Actualize geometry information
if
master
.
winfo_ismapped
():
m_width
=
master
.
winfo_width
()
m_height
=
master
.
winfo_height
()
m_x
=
master
.
winfo_rootx
()
m_y
=
master
.
winfo_rooty
()
else
:
m_width
=
master
.
winfo_screenwidth
()
m_height
=
master
.
winfo_screenheight
()
m_x
=
m_y
=
0
w_width
=
widget
.
winfo_reqwidth
()
w_height
=
widget
.
winfo_reqheight
()
x
=
m_x
+
(
m_width
-
w_width
)
*
relx
y
=
m_y
+
(
m_height
-
w_height
)
*
rely
if
x
+
w_width
>
master
.
winfo_screenwidth
():
x
=
master
.
winfo_screenwidth
()
-
w_width
elif
x
<
0
:
x
=
0
if
y
+
w_height
>
master
.
winfo_screenheight
():
y
=
master
.
winfo_screenheight
()
-
w_height
elif
y
<
0
:
y
=
0
widget
.
geometry
(
"+%d+%d"
%
(
x
,
y
))
widget
.
deiconify
()
# Become visible at the desired location
def
go
(
self
):
self
.
root
.
grab_set
()
self
.
root
.
mainloop
()
self
.
root
.
destroy
()
return
self
.
num
self
.
root
.
grab_set
()
self
.
root
.
mainloop
()
self
.
root
.
destroy
()
return
self
.
num
def
return_event
(
self
,
event
):
if
self
.
default
is
None
:
self
.
root
.
bell
()
else
:
self
.
done
(
self
.
default
)
if
self
.
default
is
None
:
self
.
root
.
bell
()
else
:
self
.
done
(
self
.
default
)
def
wm_delete_window
(
self
):
if
self
.
cancel
is
None
:
self
.
root
.
bell
()
else
:
self
.
done
(
self
.
cancel
)
if
self
.
cancel
is
None
:
self
.
root
.
bell
()
else
:
self
.
done
(
self
.
cancel
)
def
done
(
self
,
num
):
self
.
num
=
num
self
.
root
.
quit
()
self
.
num
=
num
self
.
root
.
quit
()
def
test
():
root
=
Tk
()
def
doit
(
root
=
root
):
d
=
SimpleDialog
(
root
,
text
=
"This is a test dialog. "
"Would this have been an actual dialog, "
"the buttons below would have been glowing "
"in soft pink light.
\
n
"
"Do you believe this?"
,
buttons
=
[
"Yes"
,
"No"
,
"Cancel"
],
default
=
0
,
cancel
=
2
,
title
=
"Test Dialog"
)
print
d
.
go
()
d
=
SimpleDialog
(
root
,
text
=
"This is a test dialog. "
"Would this have been an actual dialog, "
"the buttons below would have been glowing "
"in soft pink light.
\
n
"
"Do you believe this?"
,
buttons
=
[
"Yes"
,
"No"
,
"Cancel"
],
default
=
0
,
cancel
=
2
,
title
=
"Test Dialog"
)
print
d
.
go
()
t
=
Button
(
root
,
text
=
'Test'
,
command
=
doit
)
t
.
pack
()
q
=
Button
(
root
,
text
=
'Quit'
,
command
=
t
.
quit
)
...
...
Lib/lib-tk/Tkinter.py
View file @
c4570487
...
...
@@ -51,8 +51,14 @@ def _cnfmerge(cnfs):
class
Event
:
pass
_support_default_root
=
1
_default_root
=
None
def
NoDefaultRoot
():
global
_support_default_root
_support_default_root
=
0
del
_default_root
def
_tkerror
(
err
):
pass
...
...
@@ -536,7 +542,7 @@ class Misc:
if
needcleanup
:
if
self
.
_tclCommands
is
None
:
self
.
_tclCommands
=
[]
self
.
_tclCommands
.
append
(
name
)
self
.
_tclCommands
.
append
(
name
)
#print '+ Tkinter created command', name
return
name
register
=
_register
...
...
@@ -702,6 +708,7 @@ class Misc:
# Support for the "event" command, new in Tk 4.2.
# By Case Roole.
# XXX Why is this using the default root?
def
event_add
(
self
,
virtual
,
*
sequences
):
args
=
(
'event'
,
'add'
,
virtual
)
+
sequences
...
...
@@ -795,7 +802,7 @@ class Wm:
def
positionfrom
(
self
,
who
=
None
):
return
self
.
tk
.
call
(
'wm'
,
'positionfrom'
,
self
.
_w
,
who
)
def
protocol
(
self
,
name
=
None
,
func
=
None
):
if
callable
(
func
):
if
callable
(
func
):
command
=
self
.
_register
(
func
)
else
:
command
=
func
...
...
@@ -857,14 +864,14 @@ class Tk(Misc, Wm):
self
.
tk
.
createcommand
(
'tkerror'
,
_tkerror
)
self
.
tk
.
createcommand
(
'exit'
,
_exit
)
self
.
readprofile
(
baseName
,
className
)
if
not
_default_root
:
if
_support_default_root
and
not
_default_root
:
_default_root
=
self
def
destroy
(
self
):
for
c
in
self
.
children
.
values
():
c
.
destroy
()
self
.
tk
.
call
(
'destroy'
,
self
.
_w
)
Misc
.
destroy
(
self
)
global
_default_root
if
_default_root
is
self
:
if
_
support_default_root
and
_
default_root
is
self
:
_default_root
=
None
def
readprofile
(
self
,
baseName
,
className
):
import
os
...
...
@@ -994,13 +1001,14 @@ class Grid:
class
BaseWidget
(
Misc
):
def
_setup
(
self
,
master
,
cnf
):
global
_default_root
if
not
master
:
if
_support_default_root
:
global
_default_root
if
not
master
:
if
not
_default_root
:
_default_root
=
Tk
()
master
=
_default_root
if
not
_default_root
:
_default_root
=
Tk
()
master
=
_default_root
if
not
_default_root
:
_default_root
=
master
_default_root
=
master
self
.
master
=
master
self
.
tk
=
master
.
tk
name
=
None
...
...
@@ -1693,10 +1701,12 @@ class OptionMenu(Menubutton):
self
.
__menu
=
None
class
Image
:
def
__init__
(
self
,
imgtype
,
name
=
None
,
cnf
=
{},
**
kw
):
def
__init__
(
self
,
imgtype
,
name
=
None
,
cnf
=
{},
master
=
None
,
**
kw
):
self
.
name
=
None
master
=
_default_root
if
not
master
:
raise
RuntimeError
,
'Too early to create image'
if
not
master
:
master
=
_default_root
if
not
master
:
raise
RuntimeError
,
'Too early to create image'
self
.
tk
=
master
.
tk
if
not
name
:
name
=
`id(self)`
...
...
@@ -1741,8 +1751,8 @@ class Image:
self
.
tk
.
call
(
'image'
,
'width'
,
self
.
name
))
class
PhotoImage
(
Image
):
def
__init__
(
self
,
name
=
None
,
cnf
=
{},
**
kw
):
apply
(
Image
.
__init__
,
(
self
,
'photo'
,
name
,
cnf
),
kw
)
def
__init__
(
self
,
name
=
None
,
cnf
=
{},
master
=
None
,
**
kw
):
apply
(
Image
.
__init__
,
(
self
,
'photo'
,
name
,
cnf
,
master
),
kw
)
def
blank
(
self
):
self
.
tk
.
call
(
self
.
name
,
'blank'
)
def
cget
(
self
,
option
):
...
...
@@ -1784,8 +1794,8 @@ class PhotoImage(Image):
apply
(
self
.
tk
.
call
,
args
)
class
BitmapImage
(
Image
):
def
__init__
(
self
,
name
=
None
,
cnf
=
{},
**
kw
):
apply
(
Image
.
__init__
,
(
self
,
'bitmap'
,
name
,
cnf
),
kw
)
def
__init__
(
self
,
name
=
None
,
cnf
=
{},
master
=
None
,
**
kw
):
apply
(
Image
.
__init__
,
(
self
,
'bitmap'
,
name
,
cnf
,
master
),
kw
)
def
image_names
():
return
_default_root
.
tk
.
call
(
'image'
,
'names'
)
def
image_types
():
return
_default_root
.
tk
.
call
(
'image'
,
'types'
)
...
...
Lib/lib-tk/tkCommonDialog.py
View file @
c4570487
...
...
@@ -25,7 +25,7 @@ class Dialog:
if
TkVersion
<
4.2
:
raise
TclError
,
"this module requires Tk 4.2 or newer"
self
.
master
=
master
self
.
master
=
master
self
.
options
=
options
def
_fixoptions
(
self
):
...
...
@@ -37,8 +37,8 @@ class Dialog:
def
show
(
self
,
**
options
):
# update instance options
for
k
,
v
in
options
.
items
():
self
.
options
[
k
]
=
v
for
k
,
v
in
options
.
items
():
self
.
options
[
k
]
=
v
self
.
_fixoptions
()
...
...
Lib/lib-tk/tkFileDialog.py
View file @
c4570487
...
...
@@ -41,14 +41,14 @@ class _Dialog(Dialog):
pass
def
_fixresult
(
self
,
widget
,
result
):
if
result
:
# keep directory and filename until next time
if
result
:
# keep directory and filename until next time
import
os
path
,
file
=
os
.
path
.
split
(
result
)
self
.
options
[
"initialdir"
]
=
path
self
.
options
[
"initialfile"
]
=
file
path
,
file
=
os
.
path
.
split
(
result
)
self
.
options
[
"initialdir"
]
=
path
self
.
options
[
"initialfile"
]
=
file
self
.
filename
=
result
# compatibility
return
result
return
result
#
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment