python TK库简单应用(实时显示子进程输出)


Posted in Python onOctober 29, 2019

本文介绍python TK库简单应用(实时显示子进程输出),分享给大家,具体如下:

#!/usr/bin/python3.5
# -*- coding: UTF-8 -*-
 
import tkinter     # 导入 Tkinter 库
import tkinter.messagebox       # 导入消息框库
import os   #导入OS库
import subprocess
 
def show_something():
 tkinter.messagebox.showinfo( "Python", "Hello everyone")
 
def show_while():
 if button3['text'] == 'WHILE_run':
 button3['text'] = 'WHILE_close'
 else:
 button3['text'] = 'WHILE_run'
 data = subprocess.Popen('./a.out',stdout = subprocess.PIPE,stdin=subprocess.PIPE,shell=True)
 while True: 
    '''
    与子进程通信,给它输入
    data.stdin.write(("abcdf\n").encode())
 data.stdin.flush()
    '''
 t1.config(state='normal')#设置为可编辑
 #t1.delete('1.0','end') #清空文本框
 t1.insert('end',data.stdout.readline())
 t1.see('end')#设置显示最末尾的数据
 t1.update()
 t1.config(state='disabled')#设置为无法编辑
 
def show_ls():
 t2.config(state='normal')#设置为可编辑
 t2.delete('1.0','end') #清空文本框
 t2.insert('end',os.popen('ls').read())
 t2.config(state='disabled')#设置为无法编辑
 
#---创建窗口对象---
root_window = tkinter.Tk()
root_window.title('TEST BY FC')
root_window.geometry('500x500')
 
#---创建容器---
main_frame = tkinter.Frame(root_window)
main_frame.pack()
 
#---创建列表---
li   = ['C','python','php','html','SQL','java']
#---创建两个列表组件---
listb = tkinter.Listbox(root_window)     
#---给小部件插入数据---
for item in li:        
 listb.insert(0,item)
listb.pack()
 
#---创建子容器,在子容器上创建Label---
frm1 = tkinter.Frame(main_frame)
frm1.pack()
tkinter.Label(frm1, text='hello', bg='green', width=10, height=2).pack(side='left')
frm2 = tkinter.Frame(main_frame)
frm2.pack()
tkinter.Label(frm1,text=' world', bg='yellow', width=10, height=2).pack(side='right')
 
#创建按钮
button_frm = tkinter.Frame(root_window)
button_frm.pack()
button1 = tkinter.Button(button_frm, text = "确定", bg='red', fg='white', width=10, height=2, command = show_something)
button1.pack()
button2 = tkinter.Button(button_frm, text = "LS", bg='blue', fg='white', width=10, height=2, command = show_ls)
button2.pack()
button3 = tkinter.Button(button_frm, text = "WHILE_run", bg='green', fg='white', width=10, height=2, command = show_while)
button3.pack()
 
#创建滚动条
s1=tkinter.Scrollbar()
s1.pack(side='right',fill='y') # side是滚动条放置的位置,上下左右。fill是将滚动条沿着y轴填充
 
#创建文本显示框
t1 = tkinter.Text(bg='lightgreen',width=30, height=10,state='disabled',yscrollcommand=s1.set)#设置为无法编辑
t1.pack()
s1.config(command=t1.yview)
t2 = tkinter.Text(bg='lightblue',width=10, height=2,state='disabled')#设置为无法编辑
t2.pack()
 
 
#t2.config(yscrollcommand=s1.set)
 
#---进入消息循环---
root_window.mainloop()

利用TK库做了一个简单的界面,很多细节没有处理,只供学习使用

其中.a.out是一个循环输出的程序,printf输出需要加fflush(stdout)清空缓冲区才可以,cout会自动清空

效果如下

python TK库简单应用(实时显示子进程输出)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
urllib2自定义opener详解
Feb 07 Python
python处理cookie详解
Feb 07 Python
python基于xmlrpc实现二进制文件传输的方法
Jun 02 Python
实践Python的爬虫框架Scrapy来抓取豆瓣电影TOP250
Jan 20 Python
PyQt5每天必学之进度条效果
Apr 19 Python
利用Python如何生成便签图片详解
Jul 09 Python
python tkinter界面居中显示的方法
Oct 11 Python
pandas计数 value_counts()的使用
Jun 24 Python
关于Python3 类方法、静态方法新解
Aug 30 Python
在PyCharm中实现添加快捷模块
Feb 12 Python
pandas数据选取:df[] df.loc[] df.iloc[] df.ix[] df.at[] df.iat[]
Apr 24 Python
Django多个app urls配置代码实例
Nov 26 Python
pygame实现贪吃蛇游戏(上)
Oct 29 #Python
利用Python小工具实现3秒钟将视频转换为音频
Oct 29 #Python
pygame实现打字游戏
Feb 19 #Python
Python 实现自动导入缺失的库
Oct 29 #Python
python实现的读取网页并分词功能示例
Oct 29 #Python
python实现LRU热点缓存及原理
Oct 29 #Python
Python 中的 import 机制之实现远程导入模块
Oct 29 #Python
You might like
php函数的常用方法及注意之处小结
2011/07/10 PHP
基于PHP遍历数组的方法汇总分析
2013/06/08 PHP
一个图片地址分解程序(用于PHP小偷程序)
2014/08/23 PHP
PHP性能分析工具XHProf安装使用教程
2015/05/13 PHP
php获取文件名称和扩展名的方法
2017/02/07 PHP
jquery 弹出层实现代码
2009/10/30 Javascript
javascript 学习笔记(八)javascript对象
2011/04/12 Javascript
js阻止默认事件与js阻止事件冒泡示例分享 js阻止冒泡事件
2014/01/27 Javascript
Select标签下拉列表二级联动级联实例代码
2014/02/07 Javascript
node.js中的fs.createReadStream方法使用说明
2014/12/17 Javascript
JavaScript中的object转换函数toString()与valueOf()介绍
2014/12/31 Javascript
jquery实现多屏多图焦点图切换特效的方法
2015/05/04 Javascript
每天一篇javascript学习小结(String对象)
2015/11/18 Javascript
JavaScript观察者模式(经典)
2015/12/09 Javascript
canvas 画布在主流浏览器中的尺寸限制详细介绍
2016/12/15 Javascript
JS实现页面中所有img对象添加onclick事件及新窗口查看图片的方法
2016/12/27 Javascript
JSON与js对象序列化实例详解
2017/03/16 Javascript
原生JS实现的简单轮播图功能【适合新手】
2018/08/17 Javascript
详解create-react-app 2.0版本如何启用装饰器语法
2018/10/23 Javascript
[04:53]DOTA2英雄基础教程 祈求者
2014/01/03 DOTA
[01:04:06]DOTA2上海特级锦标赛A组资格赛#2 Secret VS EHOME第一局
2016/02/26 DOTA
基于python socketserver框架全面解析
2017/09/21 Python
完美解决安装完tensorflow后pip无法使用的问题
2018/06/11 Python
python查找指定文件夹下所有文件并按修改时间倒序排列的方法
2018/10/21 Python
flask-restful使用总结
2018/12/04 Python
在Python中如何传递任意数量的实参的示例代码
2019/03/21 Python
PyQt5 QTable插入图片并动态更新的实例
2019/06/18 Python
Python3实现将一维数组按标准长度分隔为二维数组
2019/11/29 Python
python获取栅格点和面值的实现
2020/03/10 Python
基于PyTorch的permute和reshape/view的区别介绍
2020/06/18 Python
python解包用法详解
2021/02/17 Python
abstract是什么意思
2012/02/12 面试题
班风学风建设方案
2014/05/06 职场文书
演讲比赛通讯稿
2015/07/18 职场文书
七年级作文之雪景
2019/11/18 职场文书
JS前端监控采集用户行为的N种姿势
2022/07/23 Javascript