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 15 Python
python判断一个集合是否包含了另外一个集合中所有项的方法
Jun 30 Python
Python基于whois模块简单识别网站域名及所有者的方法
Apr 23 Python
python简单验证码识别的实现方法
May 10 Python
PyQt4 treewidget 选择改变颜色,并设置可编辑的方法
Jun 17 Python
Python批量查询关键词微信指数实例方法
Jun 27 Python
Python3+PyInstall+Sciter解决报错缺少dll、html等文件问题
Jul 15 Python
简单了解python变量的作用域
Jul 30 Python
python使用SQLAlchemy操作MySQL
Jan 02 Python
Python Matplotlib简易教程(小白教程)
Jul 28 Python
Django中ORM的基本使用教程
Dec 22 Python
使用python将HTML转换为PDF pdfkit包(wkhtmltopdf) 的使用方法
Apr 21 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的cms
2010/12/19 PHP
WordPress中调试缩略图的相关PHP函数使用解析
2016/01/07 PHP
实例讲解如何在PHP的Yii框架中进行错误和异常处理
2016/03/17 PHP
PHP实现的一致性Hash算法详解【分布式算法】
2018/03/31 PHP
php数组和链表的区别总结
2019/09/20 PHP
jQuery 性能优化指南 (1)
2009/05/21 Javascript
autoIMG 基于jquery的图片自适应插件代码
2011/03/12 Javascript
wap浏览自动跳转到wap页面的js代码
2014/05/17 Javascript
JavaScript中的slice()方法使用详解
2015/06/06 Javascript
贴近用户体验的Jquery日期、时间选择插件
2015/08/19 Javascript
jQuery实现鼠标跟随提示层效果代码(可显示文本,Div,Table,Html等)
2016/04/18 Javascript
怎么引入(调用)一个JS文件
2016/05/26 Javascript
常用的js验证和数据处理总结
2016/08/02 Javascript
Javascript 调用 ActionScript 的简单方法
2016/09/22 Javascript
B/S(Web)实时通讯解决方案分享
2017/04/06 Javascript
JavaScript实现QQ聊天消息展示和评论提交功能
2017/05/22 Javascript
在nginx上部署vue项目(history模式)的方法
2017/12/28 Javascript
jQuery实现的电子时钟效果完整示例
2018/04/28 jQuery
vue实现在线学生录入系统
2020/05/30 Javascript
浅析JavaScript 函数防抖和节流
2020/07/13 Javascript
[08:38]DOTA2-DPC中国联赛 正赛 VG vs Elephant 选手采访
2021/03/11 DOTA
Python绘制3d螺旋曲线图实例代码
2017/12/20 Python
微信小程序跳一跳游戏 python脚本跳一跳刷高分技巧
2018/01/04 Python
基于python进行桶排序与基数排序的总结
2018/05/29 Python
实例讲解Python中浮点型的基本内容
2019/02/11 Python
Python turtle画图库&&画姓名实例
2020/01/19 Python
利用HTML5中Geolocation获取地理位置调用Google Map API在Google Map上定位
2013/01/23 HTML / CSS
材料化学应届生求职信
2013/10/09 职场文书
车间调度岗位职责
2013/11/30 职场文书
银行求职信个人范文
2013/12/16 职场文书
解除劳动合同协议书范本
2014/09/13 职场文书
《桂花雨》教学反思
2016/02/19 职场文书
《失物招领》教学反思
2016/02/20 职场文书
关于使用Redisson订阅数问题
2022/01/18 Redis
python3中apply函数和lambda函数的使用详解
2022/02/28 Python
golang使用map实现去除重复数组
2022/04/14 Golang