如何解决Python,tkinter,subprocess.Popen,raw_input和stdin
老C程序员,但不熟悉Python。
我正在使用GUI(使用tkinter)来通过subprocess.Popen(file)启动另一个python文件。该子进程使用raw_input()从用户获取数据。在GUI中,我有一个文本框,并已从子进程(打印语句)重定向了stdout,这很好。但是我找不到能使用户在GUI文本框窗口中输入数据的方法(如stdin = PIPE)-一切都挂起或失败。
在重定向标准输出之前,所有的I / O操作都在终端(外壳)窗口中完成,除非用户必须从GUI切换到终端窗口……来回。
然后我的问题是:有没有一种方法可以从GUI文本框中获取用户对子流程raw_input()语句的输入?我找不到答案。
谢谢!
标记
编辑...添加了一个小示例
import os
from Tkinter import *
import ScrolledText as tkst
import subprocess
#create root window
root = Tk()
root.title('GUI Subprocess Test')
root.geometry("1200x800")
def startMain(): #
#lauch a subprocess
proc = subprocess.Popen(["python","getname.py"],stdout=subprocess.PIPE)
# proc = subprocess.Popen(["python",stdout=subprocess.PIPE,stdin=subprocess.PIPE)
#clear the text box widget
text.delete("1.0",END)
#send the scripts output to the GUI text box
for line in iter(proc.stdout.readline,''):
text.insert(END,line)
#update in "real time"
text.see(END)
text.update_idletasks()
#Start Button
submitButton = Button(root,text = " START ",command = startMain)
submitButton.grid(row = 4,column = 2,padx = (30,20),pady = (40,0))
#Text widget
text = tkst.ScrolledText(root,width=120)
text.place(x=100,y=150)
root.mainloop()
```python subprocess
import sys
import math
print "Filename: ",sys.argv[0]
print "Pi = ",math.pi
for x in range(1,11):
print (x,"* pi = ",math.pi * x)
sys.stdout.flush()
name = raw_input ("Name please: ")
print ("Nice to meet you," + name)
``` END OF EXAMPLE CODE
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。