有没有办法将Python Shell输出放在tkinter窗口中?
我想知道是否有可能(如果有,如何)将有没有办法将Python Shell输出放在tkinter窗口中?,python,shell,tkinter,Python,Shell,Tkinter,我想知道是否有可能(如果有,如何)将pythonshell输出和输入放在我创建的tkinter窗口中。我在谷歌上搜索过,但似乎什么也没找到。如果可能的话,有一个初学者可以理解的简短版本吗。(我尝试过的所有网站我都无法理解。) 这是我得到的代码: from tkinter import * def Exit(): print() def newClassResults(): #assigns variable to an input so it can be reffere
pythonshell
输出和输入放在我创建的tkinter
窗口中。我在谷歌上搜索过,但似乎什么也没找到。如果可能的话,有一个初学者可以理解的简短版本吗。(我尝试过的所有网站我都无法理解。)
这是我得到的代码:
from tkinter import *
def Exit():
print()
def newClassResults():
#assigns variable to an input so it can be reffered to later
amount = int(input("How many people would you like to add? "))
#starts for loop
for counter in range(amount):
#assigns inputto a variable called 'newName'
newName = input("\nEnter the new student's name: ")
#assigns input to a variable called 'newScore'
newScore = int(input("Enter the new student's score: "))
#adds new results to the list below
students_and_score.append((newName,newScore))
score.append(newScore)
def saveResults():
#imports time module so that the program can pause for a certain amount of time
import time
print("\nSaving...")
import random, decimal
time1 = decimal.Decimal(random.randrange(1,10))/10
time.sleep(time1)
print("\nStudents' names saved")
print("Students' scores saved")
def sortResults():
#imports operator module
import operator
#imports time module
import time
#sorts results in acsending order
students_and_score.sort(key=operator.itemgetter(1))
#prints in ascending order
print("\nSorting Results...")
import random, decimal
time1 = decimal.Decimal(random.randrange(1,10))/10
time.sleep(time1)
print(students_and_score)
def percentageCalc():
#assigns input to variable called 'number'
number = int(input("\nEnter minimum mark: "))
#creates variable called 'size'
size = len(score)
index = 0
for counter in range(size):
if score[index] > number:
higher.append(score[index])
index = index + 1
higherLength = len(higher)
#calculates percentage of people with score over amount entered
finished = higherLength / size
finished = finished * 100
#rounds percentage
finished = round(finished)
#creates space between line
print("\n")
print(finished,"% of your students got over",number,"marks")
def printResults():
#starts for loop
for pair in students_and_score:
#creates space between line
print("\n")
#changes layout of list so it is more readable
print(pair[0],pair[1])
#assigns list to a variable
students_and_score = [("Imelda Thomas",74),("Craig Parr",90),("Eric Salisbury",58),("Laurence Mann",35),("Bill Walford",82),("David Haroald",27),("Pamela Langley",43),("Sarah Boat",39),("Rachel Matthews",62),("Michaela Cunningham",69)]
score = [74,90,58,35,82,27,43,39,62,69]
higher = []
window = Tk()
#sets background colour
window.configure(background="white")
#assigns title
window.title("Menu")
#sets the size of window
window.geometry("300x300")
window.wm_iconbitmap('favicon.ico')
menu = Menu(window)
subMenu = Menu(menu)
menu.add_cascade(label="File", menu=subMenu)
subMenu.add_command(label="Exit", command=Exit)
subMenu = Menu(menu)
menu.add_cascade(label="Edit", menu=subMenu)
subMenu.add_command(label="Enter New Class Results", command=newClassResults)
subMenu.add_separator()
subMenu.add_command(label="Save Results", command=saveResults)
subMenu.add_command(label="Sort Results", command=sortResults)
subMenu.add_command(label="Print Results", command=printResults)
subMenu.add_separator()
subMenu.add_command(label="Calculate Percentage", command=percentageCalc)
#Finishes off
window.config(menu=menu)
window.mainloop()
看一看
作者在tkinter
窗口中插入终端仿真器。我修改了程序,在tkinter窗口中插入启动python的命令:
#!/usr/bin/python
from Tkinter import *
import os
root = Tk()
termf = Frame(root, width = 400, height = 200)
termf.pack(fill=BOTH, expand=YES)
wid = termf.winfo_id()
os.system('xterm -into %d -geometry 80x20 -sb -e python &' % wid)
root.mainloop()
但这在Windows中可能不起作用,因为没有xterm
这是终端工作的屏幕截图,我在同一窗口中添加了一个按钮,以显示终端确实在框架中:
您可以尝试(字符串),捕获输出并将其打印到某个文本框中。python附带的实际上就是通过将python shell嵌入到文本tkinter小部件中来实现的
如果找到或下载idlelib源:
您应该能够运行编辑器并检查/修改代码。要显示输出,您可以使用tkinter
文本
小部件,要获取输入,您可以使用条目
小部件(最后是按钮
,尽管您并不严格需要它)。。一个可能发生的问题是,如果你在后台有很多计算,你的GUI可能会冻结,在这种情况下,你可以使用线程或者after
函数…那么我如何将文本小部件应用到我的代码中?这是否回答了你的问题?我仍然不相信这段代码是否能在Mac OS X上完成它应该做的事情,因为我遇到的情况是,Python shell部分是在xterm
上启动的,而其他什么都没有(只有在我指定xterm
的整个路径时),我看不到你想用这段代码实现什么。。。这个代码应该做什么?对我来说,模拟器没有插入到框架中,但它独立启动,同时运行一个空的tkinter窗口。它可能无法在Max OS上工作(我无法测试),但它可以在Linux上工作。海报没有提到(或标记)他是否在使用Mac OS。我添加了结果的屏幕截图。注意:对于python3,您需要>安装python3 tk,导入为:“from tkinter import*”