我们如何在gui中而不是在控制台中打印代码的输出?

时间:2019-05-29 10:49:58

标签: user-interface tkinter python-3.6

我有一段大约100行的书面代码,它正在打印大约20行的输出。如何在GUI中打印此输出?

2 个答案:

答案 0 :(得分:0)

我只是为我的一个项目编写了该实现,它是在Python 2.7中编写的,但应该很容易使其适应Python 3.6

#!/usr/lib/python2.7/
# -*- coding: utf-8 -*-

from Tkinter import *
import ttk, collections

class GUI():    

    def __init__(self) :
        self.window = Tk()    

    def draw(self) :
        self.root = Frame(self.window,padx=15,pady=15,width=800,height=200)
        self.root.grid(column=0,row=0)
        self.drawConsole()
        self.window.mainloop()

    def drawConsole(self) :
        self.consoleFrame = Frame(self.root, padx=15)
        self.consoleFrame.grid(column=0,row=4,sticky="EW",pady=10)
        self.logTest = Text(self.consoleFrame, height=15, state='disabled', wrap='word',background='black',foreground='yellow')
        self.logTest.grid(column=0,row=0,sticky="EW")
        self.scrollbar = Scrollbar(self.consoleFrame, orient=VERTICAL,command=self.logTest.yview)
        self.scrollbar.grid(column=1,row=0,sticky=(N,S))
        self.logTest['yscrollcommand'] = self.scrollbar.set        

    def writeToLog(self, msg):
        numlines = self.logTest.index('end - 1 line').split('.')[0]
        self.logTest['state'] = 'normal'
        if numlines==24:
            self.logTest.delete(1.0, 2.0)
        if self.logTest.index('end-1c')!='1.0':
            self.logTest.insert('end', '\n')
        self.logTest.insert('end', msg)
        self.logTest.see(END)
        self.logTest['state'] = 'disabled'

if __name__ == "__main__":    
    gui = GUI()
    gui.draw()
    gui.writeToLog("Hello World")

答案 1 :(得分:0)

我是Python 3.x专家,但是在tkinter上,您可以使用变量来设置标签,而不必使用print()。因此,要在GUI上获取它,您需要设置带有变量的标签。看起来像这样:

from tkinter import *
window = Tk()
variable = StringVar()
variable.set(data_to_console) #You can use a variable with a string here or any string
label = Label(window, textvariable=variable)
label.grid(row=x, column=y) 

因此,您将要输出到控制台的字符串,然后使用.set()将其放入tkinter可以使用的字符串变量中。标签将允许将要打印的数据显示在GUI中。希望这会有所帮助!