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会自动清空

如果需要给子程序传入输入,可以用stdin.write,注意要清空输缓冲:

data.stdin.write(("2\n").encode())
data.stdin.flush()

效果如下

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: tkPython 的一个图形用户界面 (GUI) ,可以用来创建窗口、菜单、按钮、文本输入框等 GUI 元素。可以通过它在 Python 中创建复杂的图形界面。使用 tk时,需要先导入 tkinter 模块,然后使用 tkinter 模块中的各种函数和类。例如,可以使用 Tk() 函数创建一个顶层窗口,使用 Button() 函数创建一个按钮,使用 Entry() 函数创建一个文本输入框。使用 tk时,需要注意主事件循环 (mainloop) 的使用,因为 GUI 程序的主要循环就在这里进行。 示例代码: ``` import tkinter as tk window = tk.Tk() window.title("My Window") window.geometry("300x200") label = tk.Label(window, text="Hello, Tkinter!", font=("Arial", 16)) label.pack() button = tk.Button(window, text="Click Me", command=print_hello) button.pack() entry = tk.Entry(window, show=None) entry.pack() window.mainloop() ``` 在这段代码中,我们创建了一个窗口、一个标签、一个按钮和一个文本输入框。标签和按钮使用了 pack() 方法来调整它们在窗口中的位置。主事件循环在最后使用 mainloop() 方法启动。 ### 回答2: Python Tk是一个用于创建图形用户界面(GUI)的工具包。它是Python标准的一部分,提供了一个简单而强大的方式来构建和运行应用程序的图形界面。 Tk基于Tkinter模块,它是一个Python用于Tcl语言的接口。Tkinter允许Python程序员在应用程序中使用Tk的图形组件。它提供了创建窗口、按钮、标签、文本框等控件的功能,还可以通过绑定事件来实现交互。 使用Tk可以使开发人员更加容易地创建用户友好的界面。开发者可以使用Tk的各种函数和方法来设置和调整窗口的大小、位置和外观。他们还可以使用控件来设计应用程序的用户界面,以满足用户的需求。 Tk也具有一些有用的功能和特性,例如对话框、菜单、弹出窗口等。这些功能使开发者能够更加灵活地设计和管理应用程序的界面。 与其他图形相比,Tk在易用性和简洁性方面具有优势。由于它是Python的标准,因此无需额外安装即可使用。而且Tk的文档和教程资源丰富,使开发人员能够快速入门并掌握其使用方法。 总之,Python Tk是一个功能强大且易于使用的工具包,它提供了创建用户界面的各种控件和功能。无论是初学者还是经验丰富的开发者,都可以通过Tk构建出具有良好用户体验的应用程序。 ### 回答3: Python TkinterPython语言的标准GUI(图形用户界面)开发工具包。Tkinter提供了一组工具和组件,用于创建图形用户界面,可以与用户进行交互。 Tkinter内置了各种控件,如按钮、标签、文本框、滑块条、菜单等等。开发者可以通过调用这些控件的方法,设置控件的属性和样式,并为其添加事件处理程序,实现与用户的交互。 Tkinter的使用非常简单,只需导入,并创建一个顶层窗口,然后在这个窗口中添加控件即可。最常用的创建窗口方法是Tk()函数,可以通过该函数创建一个顶层窗口。然后使用相应的控件类和方法来添加和定位控件。最后调用mainloop()方法进入主事件循环,等待用户的交互。 Tkinter不仅具有简单易用的特点,还非常强大。除了基本的控件外,还可以通过继承组合创建新的控件,实现更复杂的功能。此外,Tkinter还支持自定义主题,可以通过调整主题的样式来改变应用程序的外观。 Tkinter广泛应用于各类Python GUI应用程序的开发,包括桌面应用、科学计算、数据可视化、游戏等。它不仅是学习Python GUI开发的良好起点,也是开发快速原型和简单应用的首选工具。 总之,Python Tkinter是一套方便、简单、强大的工具和组件集合,用于创建图形用户界面。无论是初学者还是有经验的开发者,都可以通过使用Tkinter来开发各种Python GUI应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值