【问题标题】:Change column visibility table pysimplegui更改列可见性表 pysimplegui
【发布时间】:2021-11-19 03:17:22
【问题描述】:

上一个问题询问了有关在 pysimplegui 表 here 中隐藏列的问题。使用相同的代码我可以更新可见地图以更改当前可见性(翻转它们)。我将更新行更改为包含 visible_column_map,但更新失败(我知道它并没有真正翻转,只是想要快速示例)。有没有办法做到这一点,还是我需要两个不同的表?

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'],
    ['Harry Truman', 'May 8'],
    ['John F. Kennedy', 'May 29'],
    ['George H. W. Bush', 'June 12'],
    ['George W. Bush', 'July 6'],
    ['John Quincy Adams', 'July 11'],
    ['Garrett Walker', 'July 18'],
    ['Bill Clinton', 'August 19'],
    ['Jimmy Carter', 'October 1'],
    ['John Adams', 'October 30'],
    ['Theodore Roosevelt', 'October 27'],
    ['Frank Underwood', 'November 5'],
    ['Woodrow Wilson', 'December 28'],
]

sg.theme('DarkBlue3')
sg.set_options(("Courier New", 12))

layout = [
    [sg.Table(data, headings=headings, visible_column_map=[True, False], justification='left', select_mode=sg.TABLE_SELECT_MODE_BROWSE, enable_events=True, key='President')],
    [sg.Text('', size=(22, 1), key='Birthday')],
]
window = sg.Window("Title", layout, finalize=True)

while True:
    event, values = window.read()
    if event == sg.WINDOW_CLOSED:
        break
    elif event == 'President':
        index = values[event][0]
        window['Birthday'].update(visible_column_map=(False, True)

window.close()

【问题讨论】:

    标签: pysimplegui


    【解决方案1】:

    没有更新sg.Tablevisible_column_map 的选项,并且看起来您使用错误的元素window['Birthday'] 更新它,这是一个sg.Label

    此处需要 Tkinter 代码,添加按钮 Change 以生成事件以更新它。

    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'],
        ['Harry Truman', 'May 8'],
        ['John F. Kennedy', 'May 29'],
        ['George H. W. Bush', 'June 12'],
        ['George W. Bush', 'July 6'],
        ['John Quincy Adams', 'July 11'],
        ['Garrett Walker', 'July 18'],
        ['Bill Clinton', 'August 19'],
        ['Jimmy Carter', 'October 1'],
        ['John Adams', 'October 30'],
        ['Theodore Roosevelt', 'October 27'],
        ['Frank Underwood', 'November 5'],
        ['Woodrow Wilson', 'December 28'],
    ]
    
    sg.theme('DarkBlue3')
    sg.set_options(("Courier New", 12))
    
    layout = [
        [sg.Button('Change')],
        [sg.Table(data, headings=headings, visible_column_map=[True, False],
            justification='left', select_mode=sg.TABLE_SELECT_MODE_BROWSE,
            enable_events=True, metadata=False, key='President')],
        [sg.Text('', size=(22, 1), key='Birthday')],
    ]
    window = sg.Window("Title", layout, finalize=True)
    president = window['President']
    
    while True:
        event, values = window.read()
        if event == sg.WINDOW_CLOSED:
            break
        elif event == 'President':
            index = values[event][0]
            window['Birthday'].update(value=f'Birthday: {data[index][1]}')
        elif event == 'Change':
            show = president.metadata = not president.metadata
            displaycolumns = ['President', 'Date of Birth'] if show else ['President']
            president.Widget.configure(displaycolumns=displaycolumns)
    
    window.close()
    

    【讨论】:

    • 谢谢。我在想我必须进入传统知识,但这是一个完美的解决方案。再次感谢。
    猜你喜欢
    • 1970-01-01
    • 2014-07-04
    • 2015-03-14
    • 1970-01-01
    • 2021-05-04
    • 1970-01-01
    • 1970-01-01
    • 2012-11-26
    • 1970-01-01
    相关资源
    最近更新 更多