• 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

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

  • 相关阅读:
    C# 中使用反射的优缺点
    winfrom---Window 消息大全
    Entity Framework:三种开发模式实现数据访问
    asp.net Core 2.0 MVC为Controller或Action添加定制特性实现登录验证
    [十二省联考2019] 异或粽子 解题报告 (可持久化Trie+堆)
    [jzoj 3175] 数树数 解题报告 (树链剖分)
    [jzoj 5661] 药香沁鼻 解题报告 (DP+dfs序)
    [jzoj 5662] 尺树寸泓 解题报告 (线段树+中序遍历)
    [jzoj 5664] [GDOI2018Day1模拟4.6] 凫趋雀跃 解题报告(容斥原理)
    范德蒙恒等式学习笔记
  • 原文地址:https://www.cnblogs.com/hongten/p/hongten_python_tkinter_idel.html
Copyright © 2020-2023  润新知