首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在PySimpleGUI中一次获取同一帧内的图形和表格?

在PySimpleGUI中,可以使用Multithreaded选项来实现在同一帧内同时获取图形和表格的功能。

以下是详细步骤:

  1. 导入所需的库和模块:
代码语言:txt
复制
import PySimpleGUI as sg
from matplotlib.figure import Figure
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
import pandas as pd
  1. 创建一个函数,用于生成图形:
代码语言:txt
复制
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
  1. 创建一个函数,用于生成表格:
代码语言:txt
复制
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
  1. 创建一个GUI窗口,并在窗口中添加一个图形和一个表格:
代码语言:txt
复制
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)
  1. 定义一个循环,用于更新图形和表格:
代码语言:txt
复制
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)
  1. 关闭窗口:
代码语言:txt
复制
window.close()

完整代码如下:

代码语言:txt
复制
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生成。通过不断更新图形和表格的数据,实现了在同一帧内获取图形和表格的功能。

对于腾讯云相关产品和产品介绍链接地址,由于要求不提及具体品牌商,我无法提供对应的链接地址。但腾讯云提供了丰富的云计算服务和解决方案,您可以访问腾讯云官方网站,了解他们的产品和服务,以寻找适合您需求的解决方案。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • iOS 性能优化

    为了解释这个问题首先需要了解一下屏幕图像的显示原理。首先从 CRT 显示器原理说起,如下图所示。CRT 的电子枪从上到下逐行扫描,扫描完成后显示器就呈现一帧画面。然后电子枪回到初始位置进行下一次扫描。为了同步显示器的显示过程和系统的视频控制器,显示器会用硬件时钟产生一系列的定时信号。当电子枪换行进行扫描时,显示器会发出一个水平同步信号(horizonal synchronization),简称 HSync;而当一帧画面绘制完成后,电子枪回复到原位,准备画下一帧前,显示器会发出一个垂直同步信号(vertical synchronization),简称 VSync。显示器通常以固定频率进行刷新,这个刷新率就是 VSync 信号产生的频率。虽然现在的显示器基本都是液晶显示屏了,但其原理基本一致。

    02

    优化可变刷新率屏幕的 App 体验

    WWDC21中发布的macOS Monterey中新增了可变刷新率的Adaptive-Sync显示技术,自此行业通用的可变帧率技术登录Mac生态;今天我们就围绕苹果生态中的两种可变帧率显示技术,讨论如何为用户呈现最佳体验;本文中首先我们会介绍一下macOS中的Adaptive-Sync技术;这项技术为macOS的全屏显示的App和游戏提供了更加灵活的帧率,更加流畅体验,基于此深入讨论有关顺滑渲染的最佳实践;然后我们会了解现有的iPad Pro和iPhone 13 Pro上的ProMotion技术,并进一步探讨能在不同帧率下基于CADisplayLink的最佳技术实践,在自定义绘图时为用户带来流畅的体验;本篇文章是基于Session10147 - Symbolication: Beyond the basics撰写,该Session的演讲者是来自Apple GPU软件团队的WindowServer工程师Kyle Sanner和CoreAnimation工程师 Alex Li。

    04
    领券