renheshi 发表于 2015-4-26 07:16:12

python开发_tkinter_窗口控件_自己制作的Python IDEL_博主推荐

  在了解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 RegionAlt+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.iyunv.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, command=lambda:print(MENU_FILE_ITEMS))
109   filemenu.add_command(label=MENU_FILE_ITEMS, command=lambda:print(MENU_FILE_ITEMS))
110   filemenu.add_command(label=MENU_FILE_ITEMS, command=lambda:print(MENU_FILE_ITEMS))
111   
112   filemenu.add_command(label=MENU_FILE_ITEMS, command=lambda:print(MENU_FILE_ITEMS))
113   filemenu.add_command(label=MENU_FILE_ITEMS, command=lambda:print(MENU_FILE_ITEMS))
114   filemenu.add_command(label=MENU_FILE_ITEMS, command=lambda:print(MENU_FILE_ITEMS))
115   filemenu.add_separator()
116   filemenu.add_command(label=MENU_FILE_ITEMS, command=lambda:print(MENU_FILE_ITEMS))
117   filemenu.add_command(label=MENU_FILE_ITEMS, command=lambda:print(MENU_FILE_ITEMS))
118   filemenu.add_command(label=MENU_FILE_ITEMS, command=lambda:print(MENU_FILE_ITEMS))
119   filemenu.add_separator()
120   filemenu.add_command(label=MENU_FILE_ITEMS, command=lambda:print(MENU_FILE_ITEMS))
121   filemenu.add_separator()
122   filemenu.add_command(label=MENU_FILE_ITEMS, command=lambda:print(MENU_FILE_ITEMS))
123   filemenu.add_command(label=MENU_FILE_ITEMS, command=root.destroy)
124   menubar.add_cascade(label=MENU_ITEMS, 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, command=lambda:print(MENU_EDIT_ITEMS))
130   edit_menu.add_command(label=MENU_EDIT_ITEMS, command=lambda:print(MENU_EDIT_ITEMS))
131   edit_menu.add_separator()
132   edit_menu.add_command(label=MENU_EDIT_ITEMS, command=lambda:print(MENU_EDIT_ITEMS))
133   edit_menu.add_command(label=MENU_EDIT_ITEMS, command=lambda:print(MENU_EDIT_ITEMS))
134   edit_menu.add_command(label=MENU_EDIT_ITEMS, command=lambda:print(MENU_EDIT_ITEMS))
135   edit_menu.add_command(label=MENU_EDIT_ITEMS, command=lambda:print(MENU_EDIT_ITEMS))
136   edit_menu.add_separator()
137   edit_menu.add_command(label=MENU_EDIT_ITEMS, command=lambda:print(MENU_EDIT_ITEMS))
138   edit_menu.add_command(label=MENU_EDIT_ITEMS, command=lambda:print(MENU_EDIT_ITEMS))
139   edit_menu.add_command(label=MENU_EDIT_ITEMS, command=lambda:print(MENU_EDIT_ITEMS))
140   edit_menu.add_command(label=MENU_EDIT_ITEMS, command=lambda:print(MENU_EDIT_ITEMS))
141   edit_menu.add_command(label=MENU_EDIT_ITEMS, command=lambda:print(MENU_EDIT_ITEMS))
142   edit_menu.add_command(label=MENU_EDIT_ITEMS, command=lambda:print(MENU_EDIT_ITEMS))
143   edit_menu.add_command(label=MENU_EDIT_ITEMS, command=lambda:print(MENU_EDIT_ITEMS))
144   edit_menu.add_command(label=MENU_EDIT_ITEMS, command=lambda:print(MENU_EDIT_ITEMS))
145   edit_menu.add_command(label=MENU_EDIT_ITEMS, command=lambda:print(MENU_EDIT_ITEMS))
146   edit_menu.add_command(label=MENU_EDIT_ITEMS, command=lambda:print(MENU_EDIT_ITEMS))
147   menubar.add_cascade(label=MENU_ITEMS, 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, command=lambda:print(MENU_FORMAT_ITEMS))
153   format_menu.add_command(label=MENU_FORMAT_ITEMS, command=lambda:print(MENU_FORMAT_ITEMS))
154   format_menu.add_command(label=MENU_FORMAT_ITEMS, command=lambda:print(MENU_FORMAT_ITEMS))
155   format_menu.add_command(label=MENU_FORMAT_ITEMS, command=lambda:print(MENU_FORMAT_ITEMS))
156   format_menu.add_command(label=MENU_FORMAT_ITEMS, command=lambda:print(MENU_FORMAT_ITEMS))
157   format_menu.add_command(label=MENU_FORMAT_ITEMS, command=lambda:print(MENU_FORMAT_ITEMS))
158   format_menu.add_command(label=MENU_FORMAT_ITEMS, command=lambda:print(MENU_FORMAT_ITEMS))
159   format_menu.add_command(label=MENU_FORMAT_ITEMS, command=lambda:print(MENU_FORMAT_ITEMS))
160   format_menu.add_command(label=MENU_FORMAT_ITEMS, command=lambda:print(MENU_FORMAT_ITEMS))
161   format_menu.add_command(label=MENU_FORMAT_ITEMS, command=lambda:print(MENU_FORMAT_ITEMS))
162   format_menu.add_separator()
163   format_menu.add_command(label=MENU_FORMAT_ITEMS, command=lambda:print(MENU_FORMAT_ITEMS))
164   menubar.add_cascade(label=MENU_ITEMS, 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, command=lambda:print(MENU_RUN_ITEMS))
170   run_menu.add_separator()
171   run_menu.add_command(label=MENU_RUN_ITEMS, command=lambda:print(MENU_RUN_ITEMS))
172   run_menu.add_command(label=MENU_RUN_ITEMS, command=lambda:print(MENU_RUN_ITEMS))
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, command=lambda:print(MENU_OPTIONS_ITEMS))
179   options_menu.add_separator()
180   options_menu.add_command(label=MENU_OPTIONS_ITEMS, command=lambda:print(MENU_OPTIONS_ITEMS))
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, command=lambda:print(MENU_WINDOWS_ITEMS))
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, command=about_idel)
194   help_menu.add_separator()
195   help_menu.add_command(label=MENU_HELP_ITEMS, command=lambda:print(MENU_HELP_ITEMS))
196   help_menu.add_command(label=MENU_HELP_ITEMS, command=lambda:print(MENU_HELP_ITEMS))
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()
  
页: [1]
查看完整版本: python开发_tkinter_窗口控件_自己制作的Python IDEL_博主推荐