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模块之StringIO使用示例
Apr 08 Python
Python爬虫抓取代理IP并检验可用性的实例
May 07 Python
Sanic框架异常处理与中间件操作实例分析
Jul 16 Python
python:接口间数据传递与调用方法
Dec 17 Python
python3.6使用tkinter实现弹跳小球游戏
May 09 Python
python使用递归的方式建立二叉树
Jul 03 Python
Django框架基础模板标签与filter使用方法详解
Jul 23 Python
Python求正态分布曲线下面积实例
Nov 20 Python
python传到前端的数据,双引号被转义的问题
Apr 03 Python
Python实现捕获异常发生的文件和具体行数
Apr 25 Python
Python 常用日期处理 -- calendar 与 dateutil 模块的使用
Sep 02 Python
用Python可视化新冠疫情数据
Jan 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
PHP代码重构方法漫谈
2018/04/17 PHP
用于自动添加Digg This!按钮的JavaScript
2006/12/23 Javascript
Node.js:Windows7下搭建的Node.js服务(来玩玩服务器端的javascript吧,这可不是前端js插件)
2011/06/27 Javascript
JS+CSS实现的竖向简洁折叠菜单效果代码
2015/10/22 Javascript
jQuery中数据缓存$.data的用法及源码完全解析
2016/04/29 Javascript
Windows系统下安装Node.js的步骤图文详解
2016/11/15 Javascript
jQuery实现动态添加tr到table的方法
2016/12/26 Javascript
基于Bootstrap 3 JQuery及RegExp的表单验证功能
2017/02/16 Javascript
详解微信小程序 通过控制CSS实现view隐藏与显示
2017/05/24 Javascript
Bootstrap Tooltip显示换行和左对齐的解决方案
2017/10/11 Javascript
vue父组件向子组件动态传值的两种方法
2017/11/11 Javascript
js断点调试心得分享(必看篇)
2017/12/08 Javascript
用jquery获取select标签中选中的option值及文本的示例
2018/01/25 jQuery
如何从零开始利用js手写一个Promise库详解
2018/04/19 Javascript
详解基于electron制作一个node压缩图片的桌面应用
2019/01/29 Javascript
JS Generator 函数的含义与用法实例总结
2020/04/08 Javascript
Python基础入门之seed()方法的使用
2015/05/15 Python
Python实现对excel文件列表值进行统计的方法
2015/07/25 Python
Python3下错误AttributeError: ‘dict’ object has no attribute’iteritems‘的分析与解决
2017/07/06 Python
学习Python3 Dlib19.7进行人脸面部识别
2018/01/24 Python
Python中optparser库用法实例详解
2018/01/26 Python
15行Python代码带你轻松理解令牌桶算法
2018/03/21 Python
django1.11.1 models 数据库同步方法
2018/05/30 Python
python for循环remove同一个list过程解析
2019/08/14 Python
基于Python爬取爱奇艺资源过程解析
2020/03/02 Python
keras-siamese用自己的数据集实现详解
2020/06/10 Python
使用Keras建立模型并训练等一系列操作方式
2020/07/02 Python
python logging模块的使用
2020/09/07 Python
CSS3 :not()选择器实现最后一行li去除某种css样式
2016/10/19 HTML / CSS
TUMI澳大利亚网站:美国旅行箱包品牌
2017/03/27 全球购物
贝斯特韦斯特酒店集团官网:Best Western
2019/01/03 全球购物
小型女装店的创业计划书
2014/01/09 职场文书
违反工作纪律检讨书
2014/02/15 职场文书
李强为自己工作观后感
2015/06/11 职场文书
2016年劳模先进事迹材料
2016/02/25 职场文书
AJAX引擎原理以及XmlHttpRequest对象的axios、fetch区别详解
2022/04/09 Javascript