1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
|
# -*- coding: utf-8 -*-
#
# ttkbut.rb
#
# This demonstration script creates a toplevel window containing several
# simple Ttk widgets, such as labels, labelframes, buttons, checkbuttons and
# radiobuttons.
#
# based on "Id: ttkbut.tcl,v 1.4 2007/12/13 15:27:07 dgp Exp"
if defined?($ttkbut_demo) && $ttkbut_demo
$ttkbut_demo.destroy
$ttkbut_demo = nil
end
$ttkbut_demo = TkToplevel.new {|w|
title("Simple Ttk Widgets")
iconname("ttkbut")
positionWindow(w)
}
base_frame = TkFrame.new($ttkbut_demo).pack(:fill=>:both, :expand=>true)
Ttk::Label.new(base_frame, :font=>$font, :wraplength=>'4i', :justify=>:left,
:text=><<EOL).pack(:side=>:top, :fill=>:x)
Ttkã¨ã¯ï¼ãã¼ãæå®å¯è½ãªæ°ããã¦ã£ã¸ã§ããéåã§ãï¼\
ä»ï¼ããªããç®ã«ãã¦ããã®ã¯Ttkã®ãã¼ãåã©ãã«ã§ï¼\
ä¸ã«ã¯Ttkã®ã©ãã«ãã¬ã¼ã ã®ä¸ã«ä¸ã¤ã®ã°ã«ã¼ãã®Ttkã¦ã£ã¸ã§ããã\
表示ããã¦ãã¾ãï¼
æåã®ã°ã«ã¼ãã¯å
¨ã¦ãã¿ã³ã§ããï¼\
ããããã¯ãªãã¯ããã°ç¾å¨ã®ã¢ããªã±ã¼ã·ã§ã³ã®ãã¼ããè¨å®ããã¾ãï¼
ï¼çªç®ã®ã°ã«ã¼ãã¯ä¸ã¤ã®ãã§ãã¯ãã¿ã³éåã§ãï¼\
åéåã®éã«ã¯ï¼ã»ãã¬ã¼ã¿ã¦ã£ã¸ã§ãããç½®ããã¦ãã¾ãï¼\
ãªããæå¹åããã¿ã³ã¯ï¼ãã®ãããã¬ãã«ã¦ã£ã¸ã§ããå
ã®\
ä»ã®ãã¹ã¦ã®ãã¼ãåã¦ã£ã¸ã§ããã®ç¶æ
(state)ã"disabled"ãã©ããã\
ã³ã³ããã¼ã«ãããã¨ã«æ³¨æãã¦ãã ããï¼
ï¼çªç®ã®ã°ã«ã¼ãã¯é¢é£ä»ããããã©ã¸ãªãã¿ã³éåã¨ãªã£ã¦ãã¾ãï¼
EOL
## Add buttons for setting the theme
buttons = Ttk::Labelframe.new(base_frame, :text=>'ãã¿ã³')
# Ttk::Style.theme_names.each{|theme|
# Ttk::Button.new(buttons, :text=>theme,
# :command=>proc{Ttk::Style.theme_use theme}).pack(:pady=>2)
# }
Ttk.themes.each{|theme|
Ttk::Button.new(buttons, :text=>theme,
:command=>proc{Ttk.set_theme theme}).pack(:pady=>2)
}
## Helper procedure for the top checkbutton
def setState(root, value, *excepts)
return if excepts.member?(root)
## Non-Ttk widgets (e.g. the toplevel) will fail, so make it silent
begin
root.state = value
rescue
end
## Recursively invoke on all children of this root that are in the same
## toplevel widget
root.winfo_children.each{|w|
setState(w, value, *excepts) if w.winfo_toplevel == root.winfo_toplevel
}
end
## Set up the checkbutton group
checks = Ttk::Labelframe.new(base_frame, :text=>'ãã§ãã¯ãã¿ã³')
enabled = TkVariable.new(true)
e = Ttk::Checkbutton.new(checks, :text=>'æå¹å', :variable=>enabled,
:command=>proc{
setState($ttkbut_demo,
((enabled.bool)? "!disabled" : "disabled"),
e)
})
## See ttk_widget(n) for other possible state flags
sep1 = Ttk::Separator.new(checks)
sep2 = Ttk::Separator.new(checks)
cheese = TkVariable.new
tomato = TkVariable.new
basil = TkVariable.new
oregano = TkVariable.new
c1 = Ttk::Checkbutton.new(checks, :text=>'ãã¼ãº', :variable=>cheese)
c2 = Ttk::Checkbutton.new(checks, :text=>'ããã', :variable=>tomato)
c3 = Ttk::Checkbutton.new(checks, :text=>'ãã¸ã«', :variable=>basil)
c4 = Ttk::Checkbutton.new(checks, :text=>'ãªã¬ã¬ã', :variable=>oregano)
Tk.pack(e, sep1, c1, c2, sep2, c3, c4, :fill=>:x, :pady=>2)
## Set up the radiobutton group
radios = Ttk::Labelframe.new(base_frame, :text=>'ã©ã¸ãªãã¿ã³')
happyness = TkVariable.new
r1 = Ttk::Radiobutton.new(radios, :variable=>happyness,
:text=>'Great', :value=>'great')
r2 = Ttk::Radiobutton.new(radios, :variable=>happyness,
:text=>'Good', :value=>'good')
r3 = Ttk::Radiobutton.new(radios, :variable=>happyness,
:text=>'Ok', :value=>'ok')
r4 = Ttk::Radiobutton.new(radios, :variable=>happyness,
:text=>'Poor', :value=>'poor')
r5 = Ttk::Radiobutton.new(radios, :variable=>happyness,
:text=>'Awful', :value=>'awful')
Tk.pack(r1, r2, r3, r4, r5, :fill=>:x, :padx=>3, :pady=>2)
## See Code / Dismiss
Ttk::Frame.new(base_frame) {|frame|
sep = Ttk::Separator.new(frame)
Tk.grid(sep, :columnspan=>4, :row=>0, :sticky=>'ew', :pady=>2)
TkGrid('x',
Ttk::Button.new(frame, :text=>'å¤æ°åç
§',
:image=>$image['view'], :compound=>:left,
:command=>proc{
showVars(base_frame, ['æå¹å', enabled],
['ãã¼ãº', cheese], ['ããã', tomato],
['ãã¸ã«', basil], ['ãªã¬ã¬ã', oregano],
['幸ç¦åº¦', happyness])
}),
Ttk::Button.new(frame, :text=>'ã³ã¼ãåç
§',
:image=>$image['view'], :compound=>:left,
:command=>proc{showCode 'ttkbut'}),
Ttk::Button.new(frame, :text=>'éãã',
:image=>$image['delete'], :compound=>:left,
:command=>proc{
tmppath = $ttkbut_demo
$ttkbut_demo = nil
$showVarsWin[tmppath.path] = nil
tmppath.destroy
}),
:padx=>4, :pady=>4)
grid_columnconfigure(0, :weight=>1)
pack(:side=>:bottom, :fill=>:x, :expand=>true)
}
## Arrange things neatly
f = Ttk::Frame.new(base_frame).pack(:fill=>:both, :expand=>true)
f.lower
Tk.grid(buttons, checks, radios, :in=>f, :sticky=>'nwe', :pady=>2, :padx=>3)
f.grid_columnconfigure([0, 1, 2], :weight=>1, :uniform=>:yes)
|