我正在尝试为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窗口后,代码将不得不为用户做一些计算。我该怎么办?
答案 0 :(得分:1)
我是这里的新手(页面),但是错误是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