у меня есть написанный фрагмент кода около 100 строк, который печатает некоторый вывод около 20 строк. Как я могу распечатать этот вывод в графическом интерфейсе??
Я только что написал эту реализацию для своего проекта на 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")
Я сторонник Python 3.x, но когда дело доходит до tkinter, вы можете устанавливать метки с помощью переменных вместо использования print()
. Итак, чтобы получить его в графическом интерфейсе, вы хотите установить метки с переменными. Это будет выглядеть примерно так:
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. Этикетки позволяют отображать данные, которые будут напечатаны, в графическом интерфейсе. Надеюсь это поможет!