代码之家  ›  专栏  ›  技术社区  ›  Pedro Alves

Python-PySimpleGUI-无法选择日历输入

  •  0
  • Pedro Alves  · 技术社区  · 4 年前

    我正在制作一个非常简单的界面,只需要三个字段。 第一个是介绍团队名称的文本输入,第二个是选择我的团队名称,第三个是介绍日期的日历输入。

    为此,我使用以下代码:

    import PySimpleGUI as sg
    
    layout = [[sg.Text('Interface', key='-TXT-')]
          , [sg.Text('Team ID', size=(15, 1)), sg.InputText(size=(45, 1), key='-team_value-')]
          , [sg.Text('Team Name', size=(15, 1),), sg.InputText(size=(45, 1), key='-team_name_value-')]
          , [sg.Input(key='-IN4-', size=(20,1)), sg.CalendarButton('Calendar',  target='-IN4-', default_date_m_d_y=(1,None,2020), )]
          , [sg.Button('Introduce'), sg.Button('Search'), sg.Button('End'), sg.Button('Date Popup'), sg.Button('Cancel')]]
    
    window = sg.Window('window', layout)
    
    text_elem = window['-TXT-']
    
    while True:
        event, values = window.read()
        print(event, values)
        if event in (sg.WIN_CLOSED, 'Cancel'):
            break
        elif event == 'Date Popup':
            sg.popup('You chose:', sg.popup_get_date())
    
    window.close()
    

    然而,当我打开日历日期时,我无法选择任何日期,它只是打开日历并保持静态,不允许我选择任何日期。

    我做错了什么?

    谢谢

    0 回复  |  直到 4 年前
        1
  •  1
  •   Fer    4 年前

    我也有同样的问题。解决方案是不使用默认主题。在“布局”声明上方设置新主题:

    sg.theme("Dark Blue 3")
    layout = [...]
    

    或者,你可以创建自己的主题。日历使用“文本”颜色为日期编号上色,并突出显示日历的第一行。

    my_new_theme = {'BACKGROUND': '#ececec',
                    'TEXT': 'black',
                    'INPUT': 'white',
                    'TEXT_INPUT': 'black',
                    'SCROLL': 'white',
                    'BUTTON': ('black', 'white'),
                    'PROGRESS': ('#0091ff', '#D0D0D0'),
                    'BORDER': 1,
                    'SLIDER_DEPTH': 0,
                    'PROGRESS_DEPTH': 0}
    
    sg.theme_add_new('my_custom_theme', my_new_theme)
    sg.theme('my_custom_theme')
    layout = [...]
    
    推荐文章