Tkinter Text关闭,但ipython控制台保持不确定运行

时间:2019-02-11 03:45:51

标签: python pandas tkinter

我正在尝试为tkinter GUI的用户打印熊猫数据框的某些行。但是,在此测试中,显示了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 :(得分:1)

picture

我是这里的新手(页面),但是错误是mainloop本身就是一个循环。如果您关闭窗口,程序将关闭。

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

测试添加:     def date_name(self):

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

该窗口中的数据样本和函数destroy()。

如果要从同一窗口请求数据,但文本和按钮的字段属于cambas,请查找如何使用“画布”和“框架” ...好吧,我在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