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
(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()

========================================================

More reading,and english is important.

I'm Hongten

 

大哥哥大姐姐,觉得有用打赏点哦!多多少少没关系,一分也是对我的支持和鼓励。谢谢。
Hongten博客排名在100名以内。粉丝过千。
Hongten出品,必是精品。

E | hongtenzone@foxmail.com  B | http://www.cnblogs.com/hongten

========================================================

原文地址:https://www.cnblogs.com/hongten/p/hongten_python_tkinter_idel.html