Tkinter Text закрывается, но консоль ipython продолжает работать неопределенно долго - PullRequest
0 голосов
/ 11 февраля 2019

Я пытаюсь напечатать несколько строк информационного кадра pandas для пользователя моего графического интерфейса tkinter.Тем не менее, в этом тесте окно tk показывается, но при закрытии код перестает работать.

import pandas as pd
import numpy as np

import sys 
from tkinter import * 

dates = pd.date_range('20160101', periods=6)
df = pd.DataFrame(np.random.randn(6,4),index=dates,columns=list('ABCD'))

root = Tk() 

t1 = Text(root) 
t1.pack() 

class PrintToT1(object): 
 def write(self, s): 
  t1.insert(END, s) 

sys.stdout = PrintToT1() 

print ('Hello, world!') 
print (df)

mainloop() 
root.destroy()

print(2)

Я запускаю скрипт в Spyder, и когда я закрываю окно, консоль ipython продолжает обрабатыватьчто-то, но оно никогда не достигает последней строки, чтобы напечатать число 2, и я должен перезапустить консоль вручную.

Я хочу, чтобы он закрыл окно tk и продолжил сценарий, поскольку в GUI после закрытия окна tk код должен будет выполнить некоторые вычисления для пользователя.Как я мог это сделать?

1 Ответ

0 голосов
/ 11 февраля 2019

изображение

Я новичок здесь (страница), но ошибка в том, что основной цикл является самим циклом. Если вы закроете окно, программа закроется.

root_window.mainloop()
#destroy()use in ithems or daughters windows

test add: def date_name (self):

    t3 = Toplevel(root)
    t3.geometry('240x100+20+20')
    t3.title("...")
    t3.destroy()#use valid

Пример данных в этом окне и функция destroy ().

Узнайте, как использовать Canvas и Frameесли вы хотите запросить данные из того же окна, но поля текстов и кнопок принадлежат камбам ... ну, я так работаю в tkinter.

canvas_menu = Canvas(root, width=200, height=200)
canvas_menu.destroy()#this use valid 

root.destroy не действителен Tk ()это функция.

тест:

from tkinter import *
from tkinter import ttk
root=Tk()
def new_window():
    t3 = Toplevel(root)
    t3.geometry('240x100+20+20')
    t3.title("...")
    Label(t3,text="I hope to help you").pack()
    Button(t3,text="destroy() in t3 ",command=t3.destroy).pack()
canvas_c=Canvas(root, width=400, height=400)
canvas_c.pack()
canvas_c.config(bg="blue")
Label(canvas_c,text="info").place(x=100,y=250)

ba=Button(root,text="new_window",command=new_window).pack()
bb=Button(root,text="destroy() in canvas",command=canvas_c.destroy).pack()
root.mainloop()

и запуск run.jpg

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...