Python GUI编程完整示例


Posted in Python onApril 04, 2019

本文实例讲述了Python GUI编程。分享给大家供大家参考,具体如下:

import os
from time import sleep
from tkinter import *
from tkinter.messagebox import showinfo
class DirList(object):
  def __init__(self, initdir=None):
    self.top = Tk()
    self.label = Label(master=self.top, text='Directory Lister V1.0')
    self.label.pack()
    self.cwd = StringVar(master=self.top)
    self.dirl = Label(self.top, fg='blue', font=('Helvetica', 14, 'bold'))
    self.dirl.pack()
    self.dirfm = Frame(master=self.top)
    self.dirsb = Scrollbar(master=self.dirfm)
    self.dirsb.pack(side=RIGHT,fill=Y)
# fill=Y,垂直填充空间排列
    self.dirs = Listbox(master=self.dirfm, height=15, width=50, yscrollcommand=self.dirsb.set)
    self.dirs.bind('<Double-1>', func=self.setDirAndGo)  
# <Double-1>,双击显示路径列表
    self.dirsb.config(command=self.dirs.yview)
    self.dirs.pack(side=LEFT, fill=BOTH)
    self.dirfm.pack()
    self.dirn = Entry(master=self.top, width=50, textvariable=self.cwd)
    self.dirn.bind('<Return>', func=self.doLS)
    self.dirn.pack()
    self.bfm = Frame(master=self.top)
    self.cleer = Button(master=self.bfm, text='清除', command=self.clrDir, activeforeground='white',
             activebackground='blue')
    self.ls = Button(master=self.bfm, text='显示列表', command=self.doLS, activeforeground='white',
             activebackground='green')
    self.quit = Button(master=self.bfm, text='退出', command=self.top.quit, activeforeground='white',
              activebackground='red')
    self.cleer.pack(side=LEFT)
    self.ls.pack(side=LEFT)
    self.quit.pack(side=LEFT)
    self.bfm.pack()
    if initdir:
      self.cwd.set(os.curdir)
      self.doLS()
  def setDirAndGo(self, ev=None):
    self.last = self.cwd.get()
    self.dirs.config(selectbackground='red')
    chek = self.dirs.get(self.dirs.curselection())
    if not chek:
      chek = os.curdir
    self.cwd.set(chek)
    self.doLS()
  def doLS(self, ev=None):
    error = ''
    tdir = self.cwd.get()
    if not tdir:
      tdir = os.curdir
    if not os.path.exists(tdir):
      error = tdir + ':未找到文件,请检查路径!'
    elif not os.path.isdir(tdir):
      error = tdir + ':不是一个路径!'
    if error:
      # self.cwd.set(error)
      showinfo(title='提示',message=error)
      self.top.update()
      # sleep(2)
      if not (hasattr(self, 'last') and self.last):
        self.last = os.curdir
        self.cwd.set(self.last)
        self.dirs.config(selectbackground='LightSkyBlue')
        self.top.update()
        return
    if not os.path.isdir(tdir):
      self.cwd.set('')
    else:
      self.cwd.set('获取目录内容中...')
    self.top.update()
    dirlist = os.listdir(tdir)
    dirlist.sort()
    os.chdir(tdir)
    self.dirl.config(text=os.getcwd())
    self.dirs.delete(0, END)
    self.dirs.insert(END, os.curdir)
    self.dirs.insert(END, os.pardir)
    for eachfile in dirlist:
      self.dirs.insert(END, eachfile)
    self.cwd.set(os.curdir)
    self.dirs.config(selectbackground='LightSkyBlue')
  def clrDir(self, ev=None):
    self.cwd.set('')
if __name__ == '__main__':
  dir = DirList(os.curdir)
  mainloop()

效果如下:

Python GUI编程完整示例

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python实现udp数据报传输的方法
Sep 26 Python
python中查看变量内存地址的方法
May 05 Python
Python使用Srapy框架爬虫模拟登陆并抓取知乎内容
Jul 02 Python
Python 使用with上下文实现计时功能
Mar 09 Python
python爬虫之线程池和进程池功能与用法详解
Aug 02 Python
Django框架模板注入操作示例【变量传递到模板】
Dec 19 Python
Python 利用切片从列表中取出一部分使用的方法
Feb 01 Python
django多对多表的创建,级联删除及手动创建第三张表
Jul 25 Python
TensorFlow:将ckpt文件固化成pb文件教程
Feb 11 Python
Python tkinter实现简单加法计算器代码实例
May 13 Python
Python pandas 列转行操作详解(类似hive中explode方法)
May 18 Python
Python批量解压&压缩文件夹的示例代码
Apr 04 Python
Python使用sax模块解析XML文件示例
Apr 04 #Python
详解小白之KMP算法及python实现
Apr 04 #Python
Python魔法方法功能与用法简介
Apr 04 #Python
详解pandas.DataFrame中删除包涵特定字符串所在的行
Apr 04 #Python
pandas删除指定行详解
Apr 04 #Python
详解python之heapq模块及排序操作
Apr 04 #Python
python实现kmp算法的实例代码
Apr 03 #Python
You might like
PHP新手上路(十四)
2006/10/09 PHP
PHP 数据库树的遍历方法
2009/02/06 PHP
PHP strip_tags()去除HTML、XML以及PHP的标签介绍
2014/02/18 PHP
CI框架的安全性分析
2016/05/18 PHP
PHP微信红包生成代码分享
2016/10/06 PHP
JavaScript DOM学习第六章 表单实例
2010/02/19 Javascript
stream.js 一个很小、完全独立的Javascript类库
2011/10/28 Javascript
用jquery方法操作radio使其默认选项是否
2013/09/10 Javascript
js打开新窗口方法整理
2014/02/17 Javascript
JavaScript避免代码的重复执行经验技巧分享
2014/04/17 Javascript
一个可以增加和删除行的table并可编辑表格中内容
2014/06/16 Javascript
javascript匀速运动实现方法分析
2016/01/08 Javascript
JS封装的三级联动菜单(使用时只需要一行js代码)
2016/10/24 Javascript
Vue-resource实现ajax请求和跨域请求示例
2017/02/23 Javascript
浅谈js的解析顺序 作用域 严格模式
2017/10/23 Javascript
基于angular-utils-ui-breadcrumbs使用心得(分享)
2017/11/03 Javascript
JS从非数组对象转数组的方法小结
2018/03/26 Javascript
JS实现头条新闻的经典轮播图效果示例
2019/01/30 Javascript
聊聊Vue中provide/inject的应用详解
2019/11/10 Javascript
[49:35]KG vs SECRET 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/19 DOTA
python启动办公软件进程(word、excel、ppt、以及wps的et、wps、wpp)
2009/04/09 Python
python绘图库Matplotlib的安装
2014/07/03 Python
Python批量合并有合并单元格的Excel文件详解
2018/04/05 Python
学生信息管理系统python版
2018/10/17 Python
Python3实现获取图片文字里中文的方法分析
2018/12/13 Python
Python While循环语句实例演示及原理解析
2020/01/03 Python
Python计算IV值的示例讲解
2020/02/28 Python
最新PyCharm 2020.2.3永久激活码(亲测有效)
2020/11/26 Python
如何用python写个模板引擎
2021/01/14 Python
HTML5实现视频弹幕功能
2019/08/09 HTML / CSS
OLEDBConnection和SQLConnection有什么区别
2013/05/31 面试题
《雾凇》教学反思
2014/02/17 职场文书
中学生演讲稿
2014/04/26 职场文书
2014财务部年度工作总结
2014/12/08 职场文书
2014年酒店年度工作总结
2014/12/10 职场文书
2016年春季开学典礼新闻稿
2015/11/25 职场文书