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之有容乃大的list(1)
Sep 14 Python
python使用calendar输出指定年份全年日历的方法
Apr 04 Python
Python使用CMD模块更优雅的运行脚本
May 11 Python
浅谈python新手中常见的疑惑及解答
Jun 14 Python
Python学习小技巧之利用字典的默认行为
May 20 Python
Python使用asyncio包处理并发详解
Sep 09 Python
Python使用pandas处理CSV文件的实例讲解
Jun 22 Python
Python 可变类型和不可变类型及引用过程解析
Sep 27 Python
使用批处理脚本自动生成并上传NuGet包(操作方法)
Nov 19 Python
Pandas —— resample()重采样和asfreq()频度转换方式
Feb 26 Python
Python ckeditor富文本编辑器代码实例解析
Jun 22 Python
python如何操作mysql
Aug 17 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
xajax写的留言本
2006/11/25 PHP
php 字符转义 注意事项
2009/05/27 PHP
php将fileterms函数返回的结果变成可读的形式
2011/04/21 PHP
php获取随机数组列表的方法
2014/11/13 PHP
PHP中的命名空间相关概念浅析
2015/01/22 PHP
AJAX PHP无刷新form表单提交的简单实现(推荐)
2016/09/09 PHP
php写app接口并返回json数据的实例(分享)
2017/05/20 PHP
Yii2.0框架实现带分页的多条件搜索功能示例
2019/02/20 PHP
学习ExtJS Column布局
2009/10/08 Javascript
前端开发部分总结[兼容性、DOM操作、跨域等](持续更新)
2010/03/04 Javascript
JavaScript 学习初步 入门教程
2010/03/25 Javascript
input标签内容改变的触发事件介绍
2014/06/18 Javascript
JS实现网页每隔3秒弹出一次对话框的方法
2015/11/09 Javascript
判断js的Array和Object的实现方法
2016/08/29 Javascript
JS中with的替代方法与String中的正则方法详解
2016/12/23 Javascript
jQuery Validate验证表单时多个name相同的元素只验证第一个的解决方法
2016/12/24 Javascript
javascript实现简单的ajax封装示例
2016/12/28 Javascript
angular实现表单验证及提交功能
2017/02/01 Javascript
Vue使用localStorage存储数据的方法
2019/05/27 Javascript
[01:02:25]2014 DOTA2华西杯精英邀请赛5 24 NewBee VS VG
2014/05/25 DOTA
[46:58]完美世界DOTA2联赛PWL S3 Forest vs LBZS 第一场 12.17
2020/12/19 DOTA
python获得两个数组交集、并集、差集的方法
2015/03/27 Python
如何用itertools解决无序排列组合的问题
2017/05/18 Python
Python温度转换实例分析
2018/01/17 Python
python 接口测试response返回数据对比的方法
2018/02/11 Python
Win10里python3创建虚拟环境的步骤
2020/01/31 Python
python程序实现BTC(比特币)挖矿的完整代码
2021/01/20 Python
Matplotlib animation模块实现动态图
2021/02/25 Python
纯css3无js实现的Android Logo(有简单动画)
2013/01/21 HTML / CSS
T3官网:头发造型工具
2019/12/26 全球购物
俄罗斯极限运动网上商店:Board Shop №1
2020/12/18 全球购物
意大利在线药房:Saninforma
2021/02/11 全球购物
这段代码难道不该打印出56吗
2013/02/27 面试题
感恩祖国演讲稿
2014/09/09 职场文书
教师作风建设剖析材料
2014/10/11 职场文书
付款承诺函范文
2015/01/21 职场文书