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程序的方法
Apr 21 Python
python实现将pvr格式转换成pvr.ccz的方法
Apr 28 Python
python基础while循环及if判断的实例讲解
Aug 25 Python
解决csv.writer写入文件有多余的空行问题
Jul 06 Python
python3 打开外部程序及关闭的示例
Nov 06 Python
Python类装饰器实现方法详解
Dec 21 Python
python选取特定列 pandas iloc,loc,icol的使用详解(列切片及行切片)
Aug 06 Python
解决安装pyqt5之后无法打开spyder的问题
Dec 13 Python
Django Admin后台添加数据库视图过程解析
Apr 01 Python
keras实现基于孪生网络的图片相似度计算方式
Jun 11 Python
Python如何读取、写入CSV数据
Jul 28 Python
python 实用工具状态机transitions
Nov 21 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
一个连接两个不同MYSQL数据库的PHP程序
2006/10/09 PHP
PHP读取MySQL数据代码
2008/06/05 PHP
PHP 一个比较完善的简单文件上传
2010/03/25 PHP
自定义min版smarty模板引擎MinSmarty.class.php文件及用法
2016/05/20 PHP
PHP基于单例模式编写PDO类的方法
2016/09/13 PHP
PHP使用glob方法遍历文件夹下所有文件的实例
2018/10/17 PHP
js 实现在离开页面时提醒未保存的信息(减少用户重复操作)
2013/01/16 Javascript
jQuery之ajax技术的详细介绍
2013/06/19 Javascript
Function.prototype.call.apply结合用法分析示例
2013/07/03 Javascript
Flexigrid在IE下不显示数据的处理的解决方法
2013/10/24 Javascript
JavaScript中的Array 对象(数组对象)
2016/06/02 Javascript
javascript时间差插件分享
2016/07/18 Javascript
js实现PC端和移动端刮卡效果
2020/03/27 Javascript
全面解析jQuery中的$(window)与$(document)的用法区别
2017/08/15 jQuery
layer实现关闭弹出层刷新父界面功能详解
2017/11/15 Javascript
react redux入门示例
2018/04/19 Javascript
超出JavaScript安全整数限制的数字计算BigInt详解
2018/06/24 Javascript
JavaScript函数、闭包、原型、面向对象学习笔记
2018/09/06 Javascript
JS中的防抖与节流及作用详解
2019/04/01 Javascript
Vue编程式跳转的实例代码详解
2019/07/10 Javascript
Python 专题二 条件语句和循环语句的基础知识
2017/03/19 Python
Python中正则表达式详解
2017/05/17 Python
Tensorflow 利用tf.contrib.learn建立输入函数的方法
2018/02/08 Python
python读取.mat文件的数据及实例代码
2019/07/12 Python
对django layer弹窗组件的使用详解
2019/08/31 Python
CSS3弹性盒模型flex box快速入门心得(必看篇)
2016/05/24 HTML / CSS
探讨HTML5移动开发的几大特性(必看)
2015/12/30 HTML / CSS
详解HTML5之pushstate、popstate操作history,无刷新改变当前url
2017/03/15 HTML / CSS
Under Armour安德玛德国官网:美国高端运动科技品牌
2019/03/09 全球购物
Microsoft Advertising美国:微软搜索广告
2019/05/01 全球购物
Ruby如何定义一个类
2012/10/08 面试题
竞聘上岗演讲稿
2014/05/16 职场文书
六一儿童节新闻稿
2015/07/17 职场文书
《珍珠鸟》教学反思
2016/02/16 职场文书
详解Js模块化的作用原理和方案
2021/04/29 Javascript
详解python网络进程
2021/06/15 Python