python 访问文件中所有py文件,双击listbox中文件名字能运行


#-*- coding:utf:8 -*-

from Tkinter import *
from tkFont import Font
from ttk import *
from tkMessageBox import *
import os
'''
    首先,__init__有两个参数。第一个是self,即Application_ui对象本身。
    第二个是master,在Tkinter中,一个控件可能属于另一个控件,这时另一个控件就是这个控件的master。
    默认一个窗口没有master,因此master有None的默认值。
 
    第二行Frame.__init__(self, master)调用Application_ui的父类Frame的__init__函数初始化Application_ui类的Frame类部分。
    __init__函数的定义如下:
 
    __init__(self, master=None, cnf={}, **kw)
    初始化Frame对象。master为Frame的父控件,默认为None;cnf尚不清楚;kw为命名关键字参数,可接受的参数将在后面提到。
'''
class Application_ui(Frame):
#这个类仅实现界面生成功能,具体事件处理代码在子类Application中。
    def __init__(self,master = None):

        Frame.__init__(self,master)
        self.master.geometry('600x400')
        self.createWidgets()
        
    
    def createWidgets(self):
        self.top = self.winfo_toplevel()
        self.style = Style()

        self.style.configure('TCommanddirectory.TButton', background='#FFFFFF', font=('Times New Roman',12,'bold'))
        self.Commanddirectory = Button(self.top, text='访问目录', command=self.start, style='TCommanddirectory1.TButton')
        self.Commanddirectory.grid(row=0, column=0, rowspan=2, padx=10, pady=10)

  
        self.listbox0 = Listbox(self.top, height=20, width=60) 
        self.listbox0.grid(row=1, column=1, rowspan=2, padx=10, pady=10)
        header = 'filename'
        self.listbox0.insert(END,header)
        self.listbox0.itemconfig(0,fg="black")  
        self.listbox0.itemconfig(0,bg="grey")
        #双击事件绑定
        self.listbox0.bind('<Double-Button-1>',self.openfile)
        


class Application(Application_ui):
    #这个类实现具体的事件处理回调函数。界面生成代码在Application_ui中。
    def __init__(self,master=None):
        Application_ui.__init__(self, master)
        

       
    def start(self):
        l = []
        dirs = os.listdir(os.getcwd())#os.getcwd():获取当前路径
        for file in dirs:
            l.append(file)
        for i in range(len(l)):
           if '.py' in l[i]:
              to_add = ' %s' % (l[i])
              self.listbox0.insert(1, to_add)
              if i % 2:
                  self.listbox0.itemconfig(1,fg="#4B0082")  
              else:
                  self.listbox0.itemconfig(1,bg="#EDEDED")
    #定义两个参数,一个是self,一个是event
    #将idle路径加入环境变量后,利用命令行的方式访问文件
    def openfile(self, event):
        #获取所点击的文件的名称
        filename =  self.listbox0.get(self.listbox0.curselection())
        #idle打开py文件
        #cmd = "idle " + filename
        #txt打开py文件
        cmd = "notepad "+filename
        os.system(cmd)
         
if __name__ == "__main__":
    top = Tk()
    top.title('python学习结果一览')
    Application(top).mainloop()
    try: top.destroy()
    except: pass

实现内容:

     使用tkinter图形化界面,点击按钮访问文件夹下所有py文件,双击listbox中每个py文件的名字能运行该文件。(可以用python 自带的idle打开,也可以用txt打开)
实现关键:
    1.listbox双击绑定事件bind的使用
    2.环境变量下添加idle路径
    3.使用python的cmd访问

结果:


  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值