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 相关文章推荐
Python高效编程技巧
Jan 07 Python
Python socket.error: [Errno 98] Address already in use的原因和解决方法
Aug 25 Python
python处理二进制数据的方法
Jun 03 Python
Python找出文件中使用率最高的汉字实例详解
Jun 03 Python
Python的Flask框架中配置多个子域名的方法讲解
Jun 07 Python
利用Python3分析sitemap.xml并抓取导出全站链接详解
Jul 04 Python
TensorFlow实现Softmax回归模型
Mar 09 Python
网易有道2017内推编程题 洗牌(python)
Jun 19 Python
使用pyshp包进行shapefile文件修改的例子
Dec 06 Python
使用Django xadmin 实现修改时间选择器为不可输入状态
Mar 30 Python
TensorFlow实现批量归一化操作的示例
Apr 22 Python
Pandas中DataFrame交换列顺序的方法实现
Dec 14 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
PR值查询 | PageRank 查询
2006/12/20 PHP
php实现水仙花数示例分享
2014/04/03 PHP
浅谈php7的重大新特性
2015/10/23 PHP
Zend Framework教程之Zend_Config_Ini用法分析
2016/03/23 PHP
PHP重定向与伪静态区别
2017/02/19 PHP
PHP闭包定义与使用简单示例
2018/04/13 PHP
js每次Title显示不同的名言
2008/09/25 Javascript
SlideView 图片滑动(扩展/收缩)展示效果
2010/08/01 Javascript
window.open不被拦截的实现代码
2012/08/22 Javascript
js 点击页面其他地方关闭弹出层(示例代码)
2013/12/24 Javascript
JS中表单的使用小结
2014/01/11 Javascript
js函数名与form表单元素同名冲突的问题
2014/03/07 Javascript
jQuery事件绑定on()、bind()与delegate() 方法详解
2015/06/03 Javascript
Extjs gridpanel 中的checkbox(复选框)根据某行的条件不能选中的解决方法
2017/02/17 Javascript
es7学习教程之fetch解决异步嵌套问题的方法示例
2017/07/21 Javascript
微信小程序页面生命周期详解
2018/01/31 Javascript
关于vue的语法规则检测报错问题的解决
2018/05/21 Javascript
Nodejs中获取当前函数被调用的行数及文件名详解
2018/12/12 NodeJs
关于Layui Table隐藏列问题
2019/09/16 Javascript
在webstorm中配置less的方法详解
2020/09/25 Javascript
elementui实现预览图片组件二次封装
2020/12/29 Javascript
linux 下实现python多版本安装实践
2014/11/18 Python
深入解析Python中的lambda表达式的用法
2015/08/28 Python
Python selenium 自动化脚本打包成一个exe文件(推荐)
2020/01/14 Python
Python小白学习爬虫常用请求报头
2020/06/03 Python
Python 字典一个键对应多个值的方法
2020/09/29 Python
Canon佳能美国官方商店:购买数码相机、数码单反相机、镜头和打印机
2016/11/15 全球购物
北美个性化礼品商店:Things Remembered
2018/06/12 全球购物
方法名是否可以与构造器的名字相同
2012/06/04 面试题
会计助理岗位职责
2014/02/17 职场文书
施工安全生产承诺书
2014/05/23 职场文书
体育系毕业生自荐信
2014/06/28 职场文书
房租涨价通知
2015/04/23 职场文书
小学运动会报道稿
2015/07/22 职场文书
详解Python魔法方法之描述符类
2021/05/26 Python
「偶像大师 MILLION LIVE!」七尾百合子手办开订
2022/03/21 日漫