首页 > 解决方案 > 如何在 PySimpleGUI 中一次获取同一帧内的图形和表格?

问题描述

我搜索了很多,但直到我没有让图表和表格在PySimpleGUI同一框架内工作。

到目前为止我取得的成就:

我有一个dropdown menu股票的象征。旁边是graph button和一个table button。这里不同的图表即将到来。

我想要的是:我想要的是sigle frame下面的buttons图表,当我按下table button表格时,图表将出现在同一框架内。

所以我希望每次都破坏单帧并生成。

标签: pythondataframematplotlibtkinter

解决方案


大多数时候,通过一些简单的句子很难理解你的意思。

也许下面的示例代码对你来说OK,

在此处输入图像描述

import PySimpleGUI as sg

headings = ['President', 'Date of Birth']
data = [
    ['Ronald Reagan', 'February 6'],
    ['Abraham Lincoln', 'February 12'],
    ['George Washington', 'February 22'],
    ['Andrew Jackson', 'March 15'],
    ['Thomas Jefferson', 'April 13'],
]
width, height = 353, 100

sg.theme('DarkBlue')
sg.set_options(font=('Courier New', 12))

column_layout = [
    [sg.Table(data, headings=headings, pad=(0, 0), auto_size_columns=False,
        col_widths=(20, 15), num_rows=5, hide_vertical_scroll=True,
        justification='left', key='TABLE')],]

frame_layout = [
    [sg.Graph((width, height), (0, 0), (width, height), pad=(0, 0),
        background_color='green', key='GRAPH')],
    [sg.Column(column_layout, pad=(0, 0), visible=True, key='COLUMN',
        metadata=True)],]

layout = [
    [sg.Button('Frame Visible'), sg.Button('Table Visible')],
    [sg.Column(frame_layout, pad=(0, 0), key='FRAME', visible=True,
        metadata=True)],]

window  = sg.Window("Title", layout, size=(375, 265), finalize=True)
frame   = window['FRAME']
column  = window['COLUMN']

while True:

    event, values = window.read()

    if event == sg.WINDOW_CLOSED:
        break

    elif event == 'Frame Visible':
        visible = not frame.metadata
        frame.update(visible=visible)
        frame.metadata = visible

    elif event == 'Table Visible':
        if frame.metadata:
            visible = not column.metadata
            column.update(visible=visible)
            column.metadata = visible

window.close()

推荐阅读