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自动化测试之连接几组测试包实例
Sep 28 Python
Python可变参数用法实例分析
Apr 02 Python
Python简单生成8位随机密码的方法
May 24 Python
使用Turtle画正螺旋线的方法
Sep 22 Python
pyQt4实现俄罗斯方块游戏
Jun 26 Python
对Python random模块打乱数组顺序的实例讲解
Nov 08 Python
Python实现微信自动好友验证,自动回复,发送群聊链接方法
Feb 21 Python
简单了解Python matplotlib线的属性
Jun 29 Python
浅谈Django+Gunicorn+Nginx部署之路
Sep 11 Python
Django2.1.7 查询数据返回json格式的实现
Dec 29 Python
python中最小二乘法详细讲解
Feb 19 Python
Python下opencv使用hough变换检测直线与圆
Jun 18 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
如何在WIN2K下安装PHP4.04
2006/10/09 PHP
深入理解PHP几个算法:PHP冒泡、PHP二分法、PHP求素数、PHP乘法表
2013/06/06 PHP
PHP正则提取不包含指定网址的图片地址的例子
2014/04/21 PHP
非阻塞动态加载javascript广告实现代码
2010/11/17 Javascript
JQuery模板插件 jquery.tmpl 动态ajax扩展
2011/11/10 Javascript
jQuery中fadeIn、fadeOut、fadeTo的使用方法(图片显示与隐藏)
2013/05/08 Javascript
jquery的each方法使用示例分享
2014/03/25 Javascript
jQuery实现批量判断表单中文本框非空的方法(2种方法)
2015/12/09 Javascript
jquery实现鼠标悬浮停止轮播特效
2020/08/20 Javascript
轻松实现jquery选项卡切换效果
2016/10/10 Javascript
JavaScript 最佳实践:帮你提升代码质量
2016/12/03 Javascript
JavaScript实现倒计时跳转页面功能【实用】
2016/12/13 Javascript
详解Javascript中DOM的范围
2017/02/13 Javascript
js 实现获取name 相同的页面元素并循环遍历的方法
2017/02/14 Javascript
js实现九宫格的随机颜色跳转
2017/02/19 Javascript
jquery操作select取值赋值与设置选中实例
2017/02/28 Javascript
jQueryeasyui 中如何使用datetimebox 取两个日期间相隔的天数
2017/06/13 jQuery
Vuex提升学习篇
2018/01/11 Javascript
Js中将Long转换成日期格式的实现方法
2018/06/05 Javascript
模块化react-router配置方法详解
2019/06/03 Javascript
[01:25:33]完美世界DOTA2联赛PWL S3 INK ICE vs Magma 第二场 12.20
2020/12/23 DOTA
Hadoop中的Python框架的使用指南
2015/04/22 Python
Python迭代和迭代器详解
2016/11/10 Python
Python复数属性和方法运算操作示例
2017/07/21 Python
Pytorch转tflite方式
2020/05/25 Python
python 可视化库PyG2Plot的使用
2021/01/21 Python
html通过canvas转成base64的方法
2019/07/18 HTML / CSS
HTML5 source标签:媒介元素定义媒介资源
2018/01/29 HTML / CSS
全球性的在线时尚男装零售商:boohooMAN
2016/12/17 全球购物
财务工作者先进事迹材料
2014/01/17 职场文书
社团招新策划书
2014/02/04 职场文书
分居协议书范本(律师见证版)
2014/11/26 职场文书
2019暑假阅读倡议书
2019/06/24 职场文书
创业项目(超低成本创业项目)
2019/08/16 职场文书
MySQL日期时间函数知识汇总
2022/03/17 MySQL
Apache SeaTunnel实现 非CDC数据抽取
2022/05/20 Servers