Python Tkinter开发Symfony命令辅助工具

来源:互联网 发布:整形医院网络咨询工资 编辑:程序博客网 时间:2024/06/05 07:29

一、Python Tkinter

在Python GUI开发中,有多种库可供选择,如:Tkinter、WxPython、PyQT、pyGTK、Jython、MFC、PythonCard、Dabo、AnyGUI、WPY、IronPython。本文将采用Tkinter开发一款PHP框架Symfony的命令辅助工具。

Tkinter是Tk图形用户界面工具包标准的Python接口,Tk是一个轻量级的跨平台图形用户界面(GUI)开发工具,Tk和Tkinter可以运行在大多数的Unix平台、Windows、和Macintosh系统。在开发小型应用的时候,Tkinter以其简洁高效实乃不二之选。

二、工具说明及最终界面

在采用PHP框架Symfony开发时,经常需要在命令行运行生成项目、模块和清除缓存等命令,于是在初学Python之际,采用Tkinter开发此工具以练手,最终界面如下图:

工具说明:“项目路径”--可手动输入或者通过“选择”输入项目根目录,“命令”--手动输入symfony命令,“参数”--输入命令参数,“运行”--运行命令,“清除”--清除所有输入框的内容,在最后的文本框中将显示命令运行结果。

三、源码(tools.py)

[python] view plaincopy
  1. # -*- coding: utf-8 -*-  
  2. #载入Tkinter  
  3. from Tkinter import *  
  4. #载入文件选择框  
  5. from FileDialog import *  
  6. #字体设置  
  7. import tkFont  
  8. import os  
  9. #运行按钮执行函数  
  10. def runTool():  
  11.     #获取项目路径  
  12.     path_value = path_entry.get()  
  13.     #获取命令  
  14.     cmd_value  = cmd_entry.get()  
  15.     if not path_value:  
  16.         log_text.insert(END, '请选择项目路径!/n''n')  
  17.     else:  
  18.         #获取参数  
  19.         param_value = param_entry.get()  
  20.         #完整命令  
  21.         sym_cmd     = path_value + 'symfony ' + cmd_value + ' ' + param_value  
  22.         log_text.insert(END, sym_cmd + '/n''c')  
  23.         #运行命令并获取返回内容  
  24.         cmd_response = os.popen(sym_cmd).readlines()  
  25.         #将返回内容写入文本框  
  26.         log_text.insert(END, ''.join(cmd_response), 'l')  
  27.         del cmd_response  
  28. #清除按钮执行函数  
  29. def cls():  
  30.     path_entry.delete(0, END)  
  31.     cmd_entry.delete(0, END)  
  32.     param_entry.delete(0, END)  
  33.     log_text.delete(1.0, END)  
  34.       
  35. #选择按钮执行函数  
  36. def choice():  
  37.     fd = FileDialog(root, title = '项目路径')  
  38.     file_path = fd.go()  
  39.     if file_path:  
  40.         path_entry.insert(0, file_path)  
  41. #初始化Tk  
  42. root = Tk()  
  43. root.title('Symfony Tool')  
  44. #设置字体  
  45. ft  = tkFont.Font(family = 'Courier New', size = 10)  
  46. ft1 = tkFont.Font(family = 'Courier New', size = 8)  
  47. #创建项目路径标签  
  48. path_label = Label(root,  
  49.                    text = '项目路径: ',  
  50.                    font = ft)  
  51. #采用grid布局方式,下同  
  52. path_label.grid(row = 0, column = 0, sticky = W)  
  53. #创建项目路径输入框  
  54. path_entry = Entry(root, font = ft, width = 60, border = 2)  
  55. path_entry.grid(row = 0, column = 1, sticky = W)  
  56. #创建选择按钮  
  57. choice_btn = Button(root,  
  58.                     text = '选择',  
  59.                     font = ft,  
  60.                     width = 20,  
  61.                     command = choice)  
  62. choice_btn.grid(row = 0, column = 2, sticky = W)  
  63. #创建命令标签  
  64. cmd_label = Label(root,  
  65.                   text = '命 令: ',  
  66.                   font = ft)  
  67. cmd_label.grid(row = 1, column = 0, sticky = W)  
  68. #创建命令输入框  
  69. cmd_entry = Entry(root, font = ft, width = 60, border = 2)  
  70. cmd_entry.grid(row = 1, column = 1, sticky = W)  
  71. #创建运行按钮  
  72. run_btn = Button(root,  
  73.                  text = '运行',  
  74.                  font = ft,  
  75.                  command = runTool,  
  76.                  width = 20)  
  77. run_btn.grid(row = 1, column = 2, sticky = W)  
  78. #参数标签  
  79. param_label = Label(root,  
  80.                     text = '参 数: ',  
  81.                     font = ft)  
  82. param_label.grid(row = 2, column = 0, sticky = W)  
  83. #参数输入框  
  84. param_entry = Entry(root, font = ft, width = 60, border = 2)  
  85. param_entry.grid(row = 2, column = 1, sticky = W)  
  86. #清除按钮  
  87. cls_btn = Button(root,  
  88.                  text = '清除',  
  89.                  font = ft,  
  90.                  command = cls,  
  91.                  width = 20)  
  92. cls_btn.grid(row = 2, column = 2, sticky = W)  
  93. #文本框  
  94. log_text = Text(root,  
  95.                 font = ft,  
  96.                 width = 91,  
  97.                 border = 2,)  
  98. #创建tag指定文本属性  
  99. log_text.tag_config('n', foreground = 'red', background = '#000000')  
  100. log_text.tag_config('c', background = 'yellow', foreground = 'red')  
  101. log_text.tag_config('l', foreground = '#FFFFFF', background = 'blue')  
  102. log_text.grid(columnspan = 3, sticky = W)  
  103. #Copyright  
  104. cpy_label = Label(root,  
  105.                   font = ft1,  
  106.                   text = 'Symfony Tool V0.1, Author: Caleng Tan')  
  107. cpy_label.grid(columnspan = 3, sticky = W)  
  108. root.mainloop()  
 

四、直接运行搞定(>python tools.py)

另推荐Tkinter教程(英文):http://www.tutorialspoint.com/python/python_gui_programming.htm

中文教程可下载附件《Tkinter编程代码实例》

原创粉丝点击