Matplotlib 使我的 GUI tkinter 应用程序崩溃
Matplotlib crashes my GUI tkinter application
我有一个我构建的 GUI Tkinter Python 应用程序。但是,我正在为情节而苦苦挣扎。
我不愿意在里面绘图,而只是生成绘图并保存它们。
问题是当我点击按钮生成图表时,Tkinter GUI 崩溃了。
请注意,关于此问题,我已尝试在网上找到的所有解决方案。
请帮我。提前致谢。
from __future__ import print_function
import ast
import json
import matplotlib
matplotlib.use("TkAgg")
from matplotlib import pyplot as plt
import pandas as pd
import seaborn as sns
`if __name__ == "__main__":`
screen = Tk()
screen.title('My App')
screen.geometry('800x800')
screen.config(bg='#453')
f = ('sans-serif', 13)
btn_font = ('sans-serif', 10)
bgcolor = '#3399ff'
# frames
frame = Frame(screen, padx=20, pady=20, bg=bgcolor)
frame.pack(expand=True, fill=BOTH)
# label widgets
Label(
frame,
text="Company",
font=f,
bg=bgcolor
).grid(row=0, column=0, sticky='w')
Label(
frame,
text="Source Date",
font=f,
bg=bgcolor
).grid(row=1, column=0, sticky='w')
Label(
frame,
text="Destination Date",
font=f,
bg=bgcolor
).grid(row=2, column=0, sticky='w')
# entry widgets
comp = Entry(frame, width=21, font=f)
comp.grid(row=0, column=1)
src_date = DateEntry(frame, selectmode='day', date_pattern='dd/mm/yyyy', width=19, font=f)
src_date.grid(row=1, column=1)
dest_date = DateEntry(frame, selectmode='day', date_pattern='dd/mm/yyyy', width=19, font=f)
dest_date.grid(row=2, column=1)
clear_dates(src_date, dest_date)
# Buttons & Actions
btn_frame = Frame(frame, bg=bgcolor)
btn_frame.grid(columnspan=2, pady=(50, 0))
# default inputs for testing
comp.insert(0, 'Enter Company Name')
# action buttons
submit_btn = Button(
btn_frame,
text='Generate Word',
command=validate_company_and_generate_report, # generate
font=btn_font,
padx=10,
pady=5
)
submit_btn.pack(side=LEFT, expand=True, padx=(15, 0))
clear_btn = Button(
btn_frame,
text='Clear',
command=clear_inputs(comp, src_date, dest_date),
font=btn_font,
padx=10,
pady=5,
width=7
)
clear_btn.pack(side=LEFT, expand=True, padx=15)
exit_btn = Button(
btn_frame,
text='Exit',
command=lambda: screen.destroy(),
font=btn_font,
padx=10,
pady=5
)
exit_btn.pack(side=LEFT, expand=True)
screen.mainloop()
单击“生成单词”按钮后执行的命令本质上是绘制各种 charts.Not。
通过为 matplotlib 使用另一个线程解决了!
我有一个我构建的 GUI Tkinter Python 应用程序。但是,我正在为情节而苦苦挣扎。 我不愿意在里面绘图,而只是生成绘图并保存它们。 问题是当我点击按钮生成图表时,Tkinter GUI 崩溃了。
请注意,关于此问题,我已尝试在网上找到的所有解决方案。 请帮我。提前致谢。
from __future__ import print_function
import ast
import json
import matplotlib
matplotlib.use("TkAgg")
from matplotlib import pyplot as plt
import pandas as pd
import seaborn as sns
`if __name__ == "__main__":`
screen = Tk()
screen.title('My App')
screen.geometry('800x800')
screen.config(bg='#453')
f = ('sans-serif', 13)
btn_font = ('sans-serif', 10)
bgcolor = '#3399ff'
# frames
frame = Frame(screen, padx=20, pady=20, bg=bgcolor)
frame.pack(expand=True, fill=BOTH)
# label widgets
Label(
frame,
text="Company",
font=f,
bg=bgcolor
).grid(row=0, column=0, sticky='w')
Label(
frame,
text="Source Date",
font=f,
bg=bgcolor
).grid(row=1, column=0, sticky='w')
Label(
frame,
text="Destination Date",
font=f,
bg=bgcolor
).grid(row=2, column=0, sticky='w')
# entry widgets
comp = Entry(frame, width=21, font=f)
comp.grid(row=0, column=1)
src_date = DateEntry(frame, selectmode='day', date_pattern='dd/mm/yyyy', width=19, font=f)
src_date.grid(row=1, column=1)
dest_date = DateEntry(frame, selectmode='day', date_pattern='dd/mm/yyyy', width=19, font=f)
dest_date.grid(row=2, column=1)
clear_dates(src_date, dest_date)
# Buttons & Actions
btn_frame = Frame(frame, bg=bgcolor)
btn_frame.grid(columnspan=2, pady=(50, 0))
# default inputs for testing
comp.insert(0, 'Enter Company Name')
# action buttons
submit_btn = Button(
btn_frame,
text='Generate Word',
command=validate_company_and_generate_report, # generate
font=btn_font,
padx=10,
pady=5
)
submit_btn.pack(side=LEFT, expand=True, padx=(15, 0))
clear_btn = Button(
btn_frame,
text='Clear',
command=clear_inputs(comp, src_date, dest_date),
font=btn_font,
padx=10,
pady=5,
width=7
)
clear_btn.pack(side=LEFT, expand=True, padx=15)
exit_btn = Button(
btn_frame,
text='Exit',
command=lambda: screen.destroy(),
font=btn_font,
padx=10,
pady=5
)
exit_btn.pack(side=LEFT, expand=True)
screen.mainloop()
单击“生成单词”按钮后执行的命令本质上是绘制各种 charts.Not。
通过为 matplotlib 使用另一个线程解决了!