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列表切片用法示例
Apr 19 Python
python树莓派红外反射传感器
Jan 21 Python
Python中常用的8种字符串操作方法
May 06 Python
详解python解压压缩包的五种方法
Jul 05 Python
python之生成多层json结构的实现
Feb 27 Python
python opencv进行图像拼接
Mar 27 Python
python 利用zmail库发送邮件
Sep 11 Python
python批量检查两个对应的txt文件的行数是否一致的实例代码
Oct 31 Python
Django 权限管理(permissions)与用户组(group)详解
Nov 30 Python
Python Pandas list列表数据列拆分成多行的方法实现
Dec 14 Python
Python爬虫+Tkinter制作一个翻译软件的示例
Feb 20 Python
Python学习开发之图形用户界面详解
Aug 23 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
ThinkPHP实现动态包含文件的方法
2014/11/29 PHP
THINKPHP支持YAML配置文件的设置方法
2015/03/17 PHP
Zend Framework实现多服务器共享SESSION数据的方法
2016/03/22 PHP
php in_array() 检查数组中是否存在某个值详解
2016/11/23 PHP
ThinkPHP5.0多个文件上传后找不到临时文件的修改方法
2018/07/30 PHP
Yii框架的redis命令使用方法简单示例
2019/10/15 PHP
javascript 隐藏/显示指定的区域附HTML元素【legend】用法
2010/03/05 Javascript
控制文字内容的显示与隐藏示例
2014/06/11 Javascript
基于jQuery实现在线选座之高铁版
2015/08/24 Javascript
怎么引入(调用)一个JS文件
2016/05/26 Javascript
Ionic如何实现下拉刷新与上拉加载功能
2016/06/03 Javascript
jQuery页面元素动态添加后绑定事件丢失方法,非 live
2016/06/16 Javascript
Jquery鼠标放上去显示全名的实现方法
2017/02/06 Javascript
使用Require.js封装原生js轮播图的实现代码
2017/06/15 Javascript
vue3.0 CLI - 1 - npm 安装与初始化的入门教程
2018/09/14 Javascript
vue-better-scroll 的使用实例代码详解
2018/12/03 Javascript
javascript中call()、apply()的区别
2019/03/21 Javascript
Vue数字输入框组件示例代码详解
2020/01/15 Javascript
小程序中手机号识别的示例
2020/12/14 Javascript
通过vue.extend实现消息提示弹框的方法记录
2021/01/07 Vue.js
[50:28]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 Newbee vs KG
2018/04/01 DOTA
[01:00:53]OG vs IG 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
Python爬取APP下载链接的实现方法
2016/09/30 Python
Python爬虫基础之XPath语法与lxml库的用法详解
2018/09/13 Python
Python 调用 zabbix api的方法示例
2019/01/06 Python
Pycharm及python安装详细教程(图解)
2020/07/31 Python
八年级英语教学反思
2014/01/09 职场文书
大学生职业生涯规划书模板
2014/01/18 职场文书
遗嘱继承公证书
2014/04/09 职场文书
《画杨桃》教学反思
2014/04/13 职场文书
2014年学校总务处工作总结
2014/12/08 职场文书
公务员年度考核评语
2014/12/31 职场文书
英语辞职信怎么写
2015/02/28 职场文书
大学生团日活动总结
2015/05/06 职场文书
创业者如何撰写出一份打动投资人的商业计划书?
2019/07/02 职场文书
win10如何快速切换窗口 win10切换窗口快捷键分享
2022/07/23 数码科技