python - 如何关闭运行代码时弹出的空 tkinter 窗口
问题描述
我正在尝试创建一个执行特定计算的 tkinter gui。我创建了一个窗口来请求输入以进行计算。但是,每次我运行我的代码时,都会弹出 2 个窗口而不是一个。有没有办法在我运行代码时自动关闭空白窗口,这样用户只会看到要求输入的窗口。
为简单起见,我更改了所有按钮以关闭应用程序。
import numpy as np
import pandas as pd
from datetime import datetime
import tkinter as tk
import tkinter.ttk as ttk
import tkinter.messagebox
import blpapi
import pdblp
con = pdblp.BCon(timeout=5000)
con.start()
s= ttk.Style()
s.theme_use('xpnative')
root =tk.Tk()
root.title("Vega Requirement Application")
root.geometry("600x400")
ticker_var= tk.StringVar()
volume_var= tk.StringVar()
def close():
root.destroy()
def clear_all():
root.destroy()
def vega_calculation():
root.destroy()
ticker_label = ttk.Label(root, text='Bloomberg Ticker:',font=('calibre',10,'normal'))
ticker_entry = ttk.Entry(root, textvariable = ticker_var,font=('calibre',10,'normal'))
volume_label = ttk.Label(root, text='Volume:',font=('calibre',10,'normal'))
volume_entry = ttk.Entry(root, textvariable = volume_var,font=('calibre',10,'normal'))
run_btn = ttk.Button(root, text = 'Calculate', command = vega_calculation, width = 13)
close_btn = ttk.Button(root, text= 'Close App', command = close, width =13)
clear_btn = ttk.Button(root, text= 'Clear table', command = clear_all, width=13)
ticker_label.grid(row=0,column=0)
ticker_entry.grid(row=0,column=1)
volume_label.grid(row=1,column=0)
volume_entry.grid(row=1,column=1)
run_btn.grid(row=0,column=2)
close_btn.grid(row=1, column=2)
clear_btn.grid(row=0, column =4)
root.mainloop()
解决方案
以下两行将创建一个实例,因为它们执行时Tk()
没有实例:Tk()
s = ttk.Style() # create an instance of Tk() if there is none
s.theme_use('xpnative')
将这两行移到之后root = tk.Tk()
,以便它使用已创建的实例Tk()
:
root = tk.Tk()
s = ttk.Style() # use existing instance of Tk(), root
s.theme_use('xpnative')
推荐阅读
- r - 一个函数可以检测它是否已经被输入?
- python - Curl 帖子有效,但 Python Requests 帖子无效,给出 401 Unauthorized
- python - 如何使用列表中的元素作为单独列表的索引?
- javascript - 如何在不执行表单操作的情况下退出 javascript 表单验证?
- c++ - LNK2019:未解析的外部符号 __declspec(dllimport)
- javascript - 包装一个 react-bootstrap 组件 Typescript 错误
- sql - 使用过滤逻辑检查约束
- reactjs - 模拟返回承诺的组件方法
- python - 无法在 Jupyter 笔记本上更新 sklearn
- javascript - 赛普拉斯 - 在“包含”函数中使用正则表达式返回不匹配