在了解python中的tkinter模块的时候,你需要了解一些tkinter的相关知识
下面是python的API文档中的一个简单例子:
1 import tkinter as tk
2
3 class Application(tk.Frame):
4 def __init__(self, master=None):
5 tk.Frame.__init__(self, master)
6 self.pack()
7 self.createWidgets()
8
9 def createWidgets(self):
10 self.hi_there = tk.Button(self)
11 self.hi_there["text"] = "Hello World\n(click me)"
12 self.hi_there["command"] = self.say_hi
13 self.hi_there.pack(side="top")
14
15 self.QUIT = tk.Button(self, text="QUIT", fg="red",
16 command=root.destroy)
17 self.QUIT.pack(side="bottom")
18
19 def say_hi(self):
20 print("hi there, everyone!")
21
22 root = tk.Tk()
23 app = Application(master=root)
24 app.mainloop()
运行效果:
当点击'Hello World(click me)'按钮的时候,打印出:'hi there, everyone!'
当点击'QUIT'按钮的时候,退出窗口程序。
我想现在你对python的tkinter模块有一点的认识了...这是好事儿...
下面是我做的demo
运行效果:
1.点击‘New Window’菜单选项,打印出:'New Window Ctrl+N'信息
2.点击''About IDEL'菜单选项,在窗体中打印作者相关信息
3.点击‘Exit’菜单项,退出窗口程序
==============================================================
代码部分:
==============================================================
1 # -*- coding: UTF-8 -*-
2 #python tkinter menu
3 #python version 3.3.2
4 #EN = Window 7
5
6
7 from tkinter import *
8 '''
9 在python 3.3.2中,tkinter模块可以创建一个窗口控件,如Java中的Swing
10 功能描述:
11 根据Python 3.3.2 IDEL的菜单,创建出一个tkinter窗口
12 File-Exit : 退出功能完成
13 Help-About IDEL : 打印相应信息
14 其他的菜单项,当点击时,会打印出相应菜单项的名称
15 '''
16
17 __author__ = 'Hongten'
18 MENU_ITEMS = ['File', 'Edit', 'Format', 'Run', 'Options', 'Windows', 'Help']
19 #菜单File中的选项
20 MENU_FILE_ITEMS = ['New Window Ctrl+N ',
21 'Open... Ctrl+O ',
22 'Recent Files ',
23 'Open Module... Alt+M ',
24 'Class Browser Alt+C ',
25 'Path Browser ',
26 'Save Ctrl+S ',
27 'Save As... Ctrl+Shift+S',
28 'Save Copy As... Ctrl+Alt+S ',
29 'Print Window Ctrl+P ',
30 'Close Alt+F4 ',
31 'Exit Ctrl+Q ']
32 #菜单Edit中的选项
33 MENU_EDIT_ITEMS = ['Undo Ctrl+Z ',
34 'Redo Ctrl+Shift+Z ',
35 'Cut Ctrl+X ',
36 'Copy Ctrl+C ',
37 'Paste Ctrl+V ',
38 'Select All Ctrl+A ',
39 'Find... Ctrl+F ',
40 'Find Again Ctrl+G ',
41 'Find Selections Ctrl+F3 ',
42 'Find in Files Alt+F3 ',
43 'Replace... Ctrl+H ',
44 'Go to Line Alt+G ',
45 'Expend Word Alt+/ ',
46 'Show call tip Ctrl+backslash',
47 'Show surerounding parens Ctrl+0 ',
48 'Show Completions Ctrl+space ']
49 #菜单Format中的选项
50 MENU_FORMAT_ITEMS = ['Check Module Alt+X ',
51 'Ident Region Ctrl+] ',
52 'Dedent Region Ctrl+[ ',
53 'Commemt Out Region Alt+3 ',
54 'Uncomment Region Alt+4 ',
55 'Tabify Region Alt+5 ',
56 'Untabify Region Alt+6 ',
57 'Toggle Tabs Alt+T ',
58 'New Ident Width Alt+U ',
59 'Format Paragraph Alt+Q ',
60 'Strip trailing whitespace ']
61 #菜单Run中的选项
62 MENU_RUN_ITEMS = [ 'Python Shell ',
63 'Check Module Alt+X ',
64 'Run Module F5 ']
65 #菜单Options中的选项
66 MENU_OPTIONS_ITEMS = ['Config IDEL... ',
67 'Code Context ']
68 #菜单Windows中的选项
69 MENU_WINDOWS_ITEMS = ['Zoom Height Alt+2 ']
70 #菜单Help中的选项
71 MENU_HELP_ITEMS = ['About IDEL ',
72 'IDEL Help ',
73 'Python Docs F1 ']
74 #help-About IDEL
75 ABOUT_MESSAGE = '''
76 Author : Hongten
77 Author_email : hongtenzone@foxmail.com
78 Blog : http://www.cnblogs.com/hongten
79 QQ : 648719819
80 Created : 2013-09-05
81 Version : 1.0
82 '''
83 def get_tk():
84 '''获取一个Tk对象'''
85 return Tk()
86
87 def set_tk_title(tk, title):
88 '''给窗口定义title'''
89 if title is not None and title != '':
90 tk.title(title)
91 else:
92 tk.title('Hongten v1.0')
93
94 def set_tk_geometry(tk, size):
95 '''设置窗口大小,size的格式为:widthxheight,如:size = '200x100'.'''
96 if size is not None and size != '':
97 tk.geometry(size)
98 else:
99 tk.geometry('670x600')
100
101 def get_menu(tk):
102 '''获取一个菜单条'''
103 return Menu(tk)
104
105 def menu_file(menubar):
106 '''定义菜单File'''
107 filemenu = Menu(menubar, tearoff=1)
108 filemenu.add_command(label=MENU_FILE_ITEMS[0], command=lambda:print(MENU_FILE_ITEMS[0]))
109 filemenu.add_command(label=MENU_FILE_ITEMS[1], command=lambda:print(MENU_FILE_ITEMS[1]))
110 filemenu.add_command(label=MENU_FILE_ITEMS[2], command=lambda:print(MENU_FILE_ITEMS[2]))
111
112 filemenu.add_command(label=MENU_FILE_ITEMS[3], command=lambda:print(MENU_FILE_ITEMS[3]))
113 filemenu.add_command(label=MENU_FILE_ITEMS[4], command=lambda:print(MENU_FILE_ITEMS[4]))
114 filemenu.add_command(label=MENU_FILE_ITEMS[5], command=lambda:print(MENU_FILE_ITEMS[5]))
115 filemenu.add_separator()
116 filemenu.add_command(label=MENU_FILE_ITEMS[6], command=lambda:print(MENU_FILE_ITEMS[6]))
117 filemenu.add_command(label=MENU_FILE_ITEMS[7], command=lambda:print(MENU_FILE_ITEMS[7]))
118 filemenu.add_command(label=MENU_FILE_ITEMS[8], command=lambda:print(MENU_FILE_ITEMS[8]))
119 filemenu.add_separator()
120 filemenu.add_command(label=MENU_FILE_ITEMS[9], command=lambda:print(MENU_FILE_ITEMS[9]))
121 filemenu.add_separator()
122 filemenu.add_command(label=MENU_FILE_ITEMS[10], command=lambda:print(MENU_FILE_ITEMS[10]))
123 filemenu.add_command(label=MENU_FILE_ITEMS[11], command=root.destroy)
124 menubar.add_cascade(label=MENU_ITEMS[0], menu=filemenu)
125
126 def menu_edit(menubar):
127 '''定义菜单Edit'''
128 edit_menu = Menu(menubar, tearoff=1)
129 edit_menu.add_command(label=MENU_EDIT_ITEMS[0], command=lambda:print(MENU_EDIT_ITEMS[0]))
130 edit_menu.add_command(label=MENU_EDIT_ITEMS[1], command=lambda:print(MENU_EDIT_ITEMS[1]))
131 edit_menu.add_separator()
132 edit_menu.add_command(label=MENU_EDIT_ITEMS[2], command=lambda:print(MENU_EDIT_ITEMS[2]))
133 edit_menu.add_command(label=MENU_EDIT_ITEMS[3], command=lambda:print(MENU_EDIT_ITEMS[3]))
134 edit_menu.add_command(label=MENU_EDIT_ITEMS[4], command=lambda:print(MENU_EDIT_ITEMS[4]))
135 edit_menu.add_command(label=MENU_EDIT_ITEMS[5], command=lambda:print(MENU_EDIT_ITEMS[5]))
136 edit_menu.add_separator()
137 edit_menu.add_command(label=MENU_EDIT_ITEMS[6], command=lambda:print(MENU_EDIT_ITEMS[6]))
138 edit_menu.add_command(label=MENU_EDIT_ITEMS[7], command=lambda:print(MENU_EDIT_ITEMS[7]))
139 edit_menu.add_command(label=MENU_EDIT_ITEMS[8], command=lambda:print(MENU_EDIT_ITEMS[8]))
140 edit_menu.add_command(label=MENU_EDIT_ITEMS[9], command=lambda:print(MENU_EDIT_ITEMS[9]))
141 edit_menu.add_command(label=MENU_EDIT_ITEMS[10], command=lambda:print(MENU_EDIT_ITEMS[10]))
142 edit_menu.add_command(label=MENU_EDIT_ITEMS[11], command=lambda:print(MENU_EDIT_ITEMS[11]))
143 edit_menu.add_command(label=MENU_EDIT_ITEMS[12], command=lambda:print(MENU_EDIT_ITEMS[12]))
144 edit_menu.add_command(label=MENU_EDIT_ITEMS[13], command=lambda:print(MENU_EDIT_ITEMS[13]))
145 edit_menu.add_command(label=MENU_EDIT_ITEMS[14], command=lambda:print(MENU_EDIT_ITEMS[14]))
146 edit_menu.add_command(label=MENU_EDIT_ITEMS[15], command=lambda:print(MENU_EDIT_ITEMS[15]))
147 menubar.add_cascade(label=MENU_ITEMS[1], menu=edit_menu)
148
149 def menu_format(menubar):
150 '''定义菜单Format'''
151 format_menu = Menu(menubar, tearoff=1)
152 format_menu.add_command(label=MENU_FORMAT_ITEMS[0], command=lambda:print(MENU_FORMAT_ITEMS[0]))
153 format_menu.add_command(label=MENU_FORMAT_ITEMS[1], command=lambda:print(MENU_FORMAT_ITEMS[1]))
154 format_menu.add_command(label=MENU_FORMAT_ITEMS[2], command=lambda:print(MENU_FORMAT_ITEMS[2]))
155 format_menu.add_command(label=MENU_FORMAT_ITEMS[3], command=lambda:print(MENU_FORMAT_ITEMS[3]))
156 format_menu.add_command(label=MENU_FORMAT_ITEMS[4], command=lambda:print(MENU_FORMAT_ITEMS[4]))
157 format_menu.add_command(label=MENU_FORMAT_ITEMS[5], command=lambda:print(MENU_FORMAT_ITEMS[5]))
158 format_menu.add_command(label=MENU_FORMAT_ITEMS[6], command=lambda:print(MENU_FORMAT_ITEMS[6]))
159 format_menu.add_command(label=MENU_FORMAT_ITEMS[7], command=lambda:print(MENU_FORMAT_ITEMS[7]))
160 format_menu.add_command(label=MENU_FORMAT_ITEMS[8], command=lambda:print(MENU_FORMAT_ITEMS[8]))
161 format_menu.add_command(label=MENU_FORMAT_ITEMS[9], command=lambda:print(MENU_FORMAT_ITEMS[9]))
162 format_menu.add_separator()
163 format_menu.add_command(label=MENU_FORMAT_ITEMS[10], command=lambda:print(MENU_FORMAT_ITEMS[10]))
164 menubar.add_cascade(label=MENU_ITEMS[2], menu=format_menu)
165
166 def menu_run(menubar):
167 '''定义菜单Run'''
168 run_menu = Menu(menubar, tearoff=1)
169 run_menu.add_command(label=MENU_RUN_ITEMS[0], command=lambda:print(MENU_RUN_ITEMS[0]))
170 run_menu.add_separator()
171 run_menu.add_command(label=MENU_RUN_ITEMS[1], command=lambda:print(MENU_RUN_ITEMS[1]))
172 run_menu.add_command(label=MENU_RUN_ITEMS[2], command=lambda:print(MENU_RUN_ITEMS[2]))
173 menubar.add_cascade(label=MENU_ITEMS[-4], menu=run_menu)
174
175 def meun_options(menubar):
176 '''定义菜单Options'''
177 options_menu = Menu(menubar, tearoff=1)
178 options_menu.add_command(label=MENU_OPTIONS_ITEMS[0], command=lambda:print(MENU_OPTIONS_ITEMS[0]))
179 options_menu.add_separator()
180 options_menu.add_command(label=MENU_OPTIONS_ITEMS[1], command=lambda:print(MENU_OPTIONS_ITEMS[1]))
181 menubar.add_cascade(label=MENU_ITEMS[-3], menu=options_menu)
182
183 def menu_windows(menubar):
184 '''定义菜单Windows'''
185 windows_menu = Menu(menubar, tearoff=1)
186 windows_menu.add_command(label=MENU_WINDOWS_ITEMS[0], command=lambda:print(MENU_WINDOWS_ITEMS[0]))
187 windows_menu.add_separator()
188 menubar.add_cascade(label=MENU_ITEMS[-2], menu=windows_menu)
189
190 def meun_help(menubar):
191 '''定义菜单Help'''
192 help_menu = Menu(menubar, tearoff=1)
193 help_menu.add_command(label=MENU_HELP_ITEMS[0], command=about_idel)
194 help_menu.add_separator()
195 help_menu.add_command(label=MENU_HELP_ITEMS[1], command=lambda:print(MENU_HELP_ITEMS[1]))
196 help_menu.add_command(label=MENU_HELP_ITEMS[2], command=lambda:print(MENU_HELP_ITEMS[2]))
197 menubar.add_cascade(label=MENU_ITEMS[-1], menu=help_menu)
198
199 def about_idel():
200 '''Help-About IDEL function'''
201 label = Label(root, text=ABOUT_MESSAGE, fg='red')
202 label.pack(side='top')
203
204 def init_menu_bar(menubar):
205 '''初始化菜单条'''
206 menu_file(menubar) #file
207 menu_edit(menubar) #edit
208 menu_format(menubar) #format
209 menu_run(menubar) #run
210 meun_options(menubar) #options
211 menu_windows(menubar) #windows
212 meun_help(menubar) #help
213
214 #获得窗口对象
215 root = get_tk()
216 #设置窗口大小
217 set_tk_geometry(root, '')
218 #设置窗口title
219 set_tk_title(root, 'Python 3.3.2 Shell')
220 #获取菜单对象
221 menubar = get_menu(root)
222 #初始化菜单
223 init_menu_bar(menubar)
224 #加载菜单配置
225 root.config(menu=menubar)
226
227 mainloop()
E | hongtenzone@foxmail.com B | http://www.cnblogs.com/hongten