Как мы можем напечатать вывод кода в графическом интерфейсе, а не в консоли? - PullRequest
0 голосов
/ 29 мая 2019

У меня есть написанный фрагмент кода длиной около 100 строк, который выводит на печать около 20 строк. Как я могу распечатать этот вывод в графическом интерфейсе ??

Ответы [ 2 ]

0 голосов
/ 01 июня 2019

Я парень из 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. Метки позволят печатать данные, которые будут напечатаны в графическом интерфейсе. Надеюсь, это поможет!

0 голосов
/ 29 мая 2019

Я только что написал эту реализацию для моего проекта на 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")
...