(三)Python 学习第三天--GUI桌面项目
(代码参考了别人的代码,只做学习用途!!!最近因为写论文,好久没有记录,好内疚。。。今天学习了一个小案例,做一下)
主要使用模块:tkinter
代码如下:
from tkinter import *
from tkinter import messagebox as tkMessageBox
from tkinter import filedialog as tkFiledialog
import os
import fnmatch #fnmatch是一种函数,功能是指定的模式来匹配文件名或字符串。定义和用法语法 fnmatch(pattern,string,flags) 参数 描述 pattern 必需。 def search():
text = entry_1.get() #取值
if not text:
tkMessageBox.showinfo('Error','请输入关键字!')
return
fn = tkFiledialog.askdirectory()#选择文件夹
fnlist = os.walk( fn ) #列出目录
#对于os.walk的使用,产生一个可迭代的对象, 通常使用root,dirs,files来接收
#root:文件路径 dirs:子文件夹名称 files:文件名
for root, dirs, files in fnlist:
for i in fnmatch.filter(files, entry_2.get()):
filename = '%s/%s'%(root,i)
listbox.insert(END, filename) def click(event):
index = listbox.curselection()
path = listbox.get(index)
if not path:
return
window = Tk()
window.title('查看文件')
text = Text(window, width = 100) #多行文本框
text.grid()
fn_text = open(path).read()
text.insert(END, fn_text) root = Tk()
root.title('第一个可视化窗口')
#root.geometry('300x200+1000+200') 可以使用缺省内容的方式,使窗口自动调节
root.geometry()
Label(root, text = '关键字:').grid()
entry_1 = Entry(root)
entry_1.grid(row=0, column =1)
Label(root, text = '文件类型:').grid(row = 0, column = 2)
entry_2 = Entry(root)
entry_2.grid(row = 0, column = 3) button = Button(root, text = '选择文件', command=search)
button.grid(row = 0, column = 4) listbox = Listbox(root, width = 80)
listbox.bind('<Double-Button-1>',click)
listbox.grid(row = 1, column = 0, columnspan = 5)
root.mainloop()
实现效果:
第一步:打开一个可视化的桌面窗口:

第二步:当关键字不输入时:

第三步:当正确输入时,弹出文件选择窗口:


第四步:双击列表里的任意一条信息,打开文件:

注:
1. 走过的坑,tkinter为自带类库,不需要从第三方加载,Python2中为Tkinter,但在Python3中为tkinter,并把一些子库放在tkinter中;
2.root = Tk(),实例化一个窗口对象; root.geometry('300x200+200+100') ==> 其中不是乘号符*,而是英文字母x,200为离屏幕左边的距离, 100为离屏幕右边的距离
3.from tkinter import messagebox , messagebox 为一个弹出的信息框;
4.from tkinter import filedialog , filedialog 为文件选择
5.GUI开发:由界面----> 功能
(三)Python 学习第三天--GUI桌面项目的更多相关文章
- python学习第三次记录
python学习第三次记录 python中常用的数据类型: 整数(int) ,字符串(str),布尔值(bool),列表(list),元组(tuple),字典(dict),集合(set). int.数 ...
- Python 学习 第三天 课后总结:
PYTHON学习第三天课后总结: 1,注释:就是对代码起到说明注解的作用. 注释分为单行注释与多行注释. 单行注释:只注释一行代码在需要注释的所在行的行首使用#号来注释此行,注意#与代码之间需要 ...
- Python学习(三) 八大排序算法的实现(下)
本文Python实现了插入排序.基数排序.希尔排序.冒泡排序.高速排序.直接选择排序.堆排序.归并排序的后面四种. 上篇:Python学习(三) 八大排序算法的实现(上) 1.高速排序 描写叙述 通过 ...
- Python学习-第三天-面向对象编程基础
Python学习-第三天-面向对象编程基础 类和对象 简单的说,类是对象的蓝图和模板,而对象是类的实例.这个解释虽然有点像用概念在解释概念,但是从这句话我们至少可以看出,类是抽象的概念,而对象是具体的 ...
- python 学习(三)
按照上次python 学习(二)的思路,第一步要实现从一个网站的页面上自动获取指定列表中的信息.折腾数日,得到一段可以正常运行的代码,如下: #web2.py import re import url ...
- python学习(三):matplotlib学习
前言:matplotlib是一个python的第三方库,里面的pyplot可以用来作图.下面来学习一下如何使用它的资源. 一.使用前 首先在python中使用任何第三方库时,都必须先将其引入.即: i ...
- webdriver(python) 学习笔记三
知识点:简单的对象定位 对象的定位应该是自动化测试的核心,要想操作一个对象,首先应该识别这个对象.一个对象就是一个人一样,他会有各种的特征(属性),如比我们可以通过一个人的身份证号,姓名,或者他住在哪 ...
- [Python学习] 模块三.基本字符串
于Python最重要的数据类型包含字符串.名单.元组和字典.本文重点介绍Python基础知识. 一.字符串基础 字符串指一有序的字符序列集合,用单引號.双引號.三重(单 ...
- PYTHON学习(三)之利用python进行数据分析(1)---准备工作
学习一门语言就是不断实践,python是目前用于数据分析最流行的语言,我最近买了本书<利用python进行数据分析>(Wes McKinney著),还去图书馆借了本<Python数据 ...
随机推荐
- endWith is not a function
解决方法,增加String的扩展 String.prototype.endWith = function(suffix) { return this.indexOf(suffix, this.leng ...
- strace oracle
http://www.itpub.net/thread-1865593-1-1.html
- 前段集成解决方案grunt+yeoman初步认识
1.什么是前段集成解决方案? 将前端研发领域中各种分散的技术元素集中在一起,并对常见的前端开发问题.不足.缺陷和需求,所提出的一种解决问题的方案 2.yeoman 应用的架构,模型! 相当于一个生成 ...
- ExtJs--13-- Ext.apply(src,apply) 和 Ext.applyIf(src,apply) 两个方法的使用和差别比較
Ext.onReady(function(){ /* * Ext.apply(src,apply) 和 Ext.applyIf(src,apply) 两个方法的使用和差别比較 */ //Ext.app ...
- C#之快速排序
算法描述 1.假定数组首位元素为“枢轴”,设定数列首位(begin)与末位(end)索引: 2.由末位索引对应元素与“枢轴”进行比较,如果末位索引对应元素大于“枢轴”元素,对末位索引减一(end--) ...
- Android对方向感应器的封装调用
Android自动的SensorManager使用起来已经很方便,但由于一些情况我们希望对其中的功能进行封装: 只使用个别的sensor,功能相对单一 要对sensor返回的raw data进行算法处 ...
- MapReduce的矩阵相乘
一.单个mapreduce的实现 转自:http://blog.sina.com.cn/s/blog_62186b460101ai1x.html 王斌_ICTIR老师的<大数据:互联网大规模数据 ...
- nyoj448 寻找最大数
寻找最大数 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描写叙述 请在整数 n 中删除m个数字, 使得余下的数字按原次序组成的新数最大. 比方当n=920813467185 ...
- B1818 [Cqoi2010]内部白点 树状数组
这个题的想法很好想,就是进行排序之后直接检查每个点的上下左右是否有黑点就行.但是直接枚举显然不行,那怎么办呢?我们就用树状数组维护扫描线,把每排左右点看成一条线覆盖,然后从下往上扫,遇到下加一,遇到上 ...
- POJ 1273 Drainage Ditches 最大流
这道题用dinic会超时 用E_K就没问题 注意输入数据有重边.POJ1273 dinic的复杂度为O(N*N*M)E_K的复杂度为O(N*M*M)对于这道题,复杂度是相同的. 然而dinic主要依靠 ...