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 相关文章推荐
在Gnumeric下使用Python脚本操作表格的教程
Apr 14 Python
python 定义给定初值或长度的list方法
Jun 23 Python
详解Python最长公共子串和最长公共子序列的实现
Jul 07 Python
在python中,使用scatter绘制散点图的实例
Jul 03 Python
Python的matplotlib绘图如何修改背景颜色的实现
Jul 16 Python
python selenium 查找隐藏元素 自动播放视频功能
Jul 24 Python
python pycharm的安装及其使用
Oct 11 Python
python绘制彩虹图
Dec 16 Python
Python Django2 model 查询介绍(条件、范围、模糊查询)
Mar 16 Python
pycharm部署、配置anaconda环境的教程
Mar 24 Python
pycharm2020.2 配置使用的方法详解
Sep 16 Python
Ubuntu 20.04安装Pycharm2020.2及锁定到任务栏的问题(小白级操作)
Oct 29 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支持页面回退的两种方法
2008/01/10 PHP
ThinkPHP控制器详解
2015/07/27 PHP
php数组遍历类与用法示例
2019/05/24 PHP
浅析PHP7 的垃圾回收机制
2019/09/06 PHP
jquery 防止表单重复提交代码
2010/01/21 Javascript
jQuery的实现原理的模拟代码 -2 数据部分
2010/08/01 Javascript
教您去掉ie网页加载进度条的方法
2010/12/09 Javascript
jQuery EasyUI API 中文文档 搜索框
2011/09/29 Javascript
Extjs4 Treegrid 使用心得分享(经验篇)
2013/07/01 Javascript
使用jquery解析XML的方法
2014/09/05 Javascript
jQuery之DOM对象和jQuery对象的转换与区别分析
2015/01/08 Javascript
AngularJS入门教程之更多模板详解
2016/08/19 Javascript
微信小程序  audio音频播放详解及实例
2016/11/02 Javascript
原生js和css实现图片轮播效果
2017/02/07 Javascript
微信小程序scroll-view实现横向滚动和上拉加载示例
2017/03/06 Javascript
vue组件传递对象中实现单向绑定的示例
2018/02/28 Javascript
js实现动态增加文件域表单功能
2018/10/22 Javascript
使用原生JS实现滚轮翻页效果的示例代码
2020/05/31 Javascript
你不知道的 TypeScript 高级类型(小结)
2020/08/28 Javascript
Python学习之asyncore模块用法实例教程
2014/09/29 Python
python获取list下标及其值的简单方法
2016/09/12 Python
Django 如何获取前端发送的头文件详解(推荐)
2017/08/15 Python
python决策树之C4.5算法详解
2017/12/20 Python
Python读取指定日期邮件的实例
2019/02/01 Python
python多环境切换及pyenv使用过程详解
2019/09/27 Python
Python matplotlib 绘制双Y轴曲线图的示例代码
2020/06/12 Python
python报错: 'list' object has no attribute 'shape'的解决
2020/07/15 Python
CSS3实现同时执行倾斜和旋转的动画效果
2016/10/27 HTML / CSS
澳大利亚领先的宠物用品商店:VetSupply
2017/09/08 全球购物
香港最大的洋酒零售连锁店:屈臣氏酒窖(Watson’s Wine)
2018/12/10 全球购物
this关键字的作用
2016/01/30 面试题
长安大学毕业生自我鉴定
2014/01/17 职场文书
国窖1573广告词
2014/03/21 职场文书
谢师宴答谢词
2015/01/05 职场文书
8g内存用python读取10文件_面试题-python 如何读取一个大于 10G 的txt文件?
2021/05/28 Python
java后台调用接口及处理跨域问题的解决
2022/03/24 Java/Android