在PySimpleGUI中,可以使用Multithreaded
选项来实现在同一帧内同时获取图形和表格的功能。
以下是详细步骤:
import PySimpleGUI as sg
from matplotlib.figure import Figure
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
import pandas as pd
def generate_graph():
fig = Figure(figsize=(5, 4), dpi=100)
ax = fig.add_subplot(111)
ax.plot([0, 1, 2, 3, 4, 5], [0, 1, 4, 9, 16, 25])
return fig
def generate_table():
data = {'Name': ['John', 'Mike', 'Sarah', 'Amy'],
'Age': [25, 30, 28, 35],
'City': ['New York', 'Paris', 'London', 'Tokyo']}
df = pd.DataFrame(data)
return df
graph_layout = [[sg.Canvas(key='-CANVAS-')]]
table_layout = [[sg.Table(values=generate_table().values, headings=generate_table().columns.tolist(), key='-TABLE-')]]
layout = [[sg.Frame('Graph', graph_layout)], [sg.Frame('Table', table_layout)]]
window = sg.Window('PySimpleGUI Example', layout)
while True:
event, values = window.read(timeout=0)
if event == sg.WINDOW_CLOSED:
break
fig = generate_graph()
canvas = FigureCanvasTkAgg(fig, window['-CANVAS-'].TKCanvas)
canvas.draw()
canvas.get_tk_widget().pack(side='top', fill='both', expand=1)
window['-TABLE-'].update(values=generate_table().values)
window.close()
完整代码如下:
import PySimpleGUI as sg
from matplotlib.figure import Figure
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
import pandas as pd
def generate_graph():
fig = Figure(figsize=(5, 4), dpi=100)
ax = fig.add_subplot(111)
ax.plot([0, 1, 2, 3, 4, 5], [0, 1, 4, 9, 16, 25])
return fig
def generate_table():
data = {'Name': ['John', 'Mike', 'Sarah', 'Amy'],
'Age': [25, 30, 28, 35],
'City': ['New York', 'Paris', 'London', 'Tokyo']}
df = pd.DataFrame(data)
return df
graph_layout = [[sg.Canvas(key='-CANVAS-')]]
table_layout = [[sg.Table(values=generate_table().values, headings=generate_table().columns.tolist(), key='-TABLE-')]]
layout = [[sg.Frame('Graph', graph_layout)], [sg.Frame('Table', table_layout)]]
window = sg.Window('PySimpleGUI Example', layout)
while True:
event, values = window.read(timeout=0)
if event == sg.WINDOW_CLOSED:
break
fig = generate_graph()
canvas = FigureCanvasTkAgg(fig, window['-CANVAS-'].TKCanvas)
canvas.draw()
canvas.get_tk_widget().pack(side='top', fill='both', expand=1)
window['-TABLE-'].update(values=generate_table().values)
window.close()
此代码创建了一个包含图形和表格的GUI窗口,图形使用matplotlib生成,表格使用pandas生成。通过不断更新图形和表格的数据,实现了在同一帧内获取图形和表格的功能。
对于腾讯云相关产品和产品介绍链接地址,由于要求不提及具体品牌商,我无法提供对应的链接地址。但腾讯云提供了丰富的云计算服务和解决方案,您可以访问腾讯云官方网站,了解他们的产品和服务,以寻找适合您需求的解决方案。
领取专属 10元无门槛券
手把手带您无忧上云