You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Timestamp转换为日期格式?PySimpleGUI项目开发问题

解决PySimpleGUI表格中Pandas Timestamp日期格式显示问题

我是Python新手,正在用PySimpleGUI开发项目追踪器管理工作。手动转换列表日期值时,出现打印错误且值被移出列表的问题,没法正常构建表格。想找个全局方法把日期格式从Timestamp转为Date或Datetime格式。

以下是我的代码:

import PySimpleGUI as sg
import pandas as pd
from datetime import datetime


Excel_Read = pd.read_excel('C:\pythonProject\Schedule\Project_Schedule.xlsx', sheet_name='Schedule')

schedule_headings = ['Priority', 'Project_Name','Project_Num','Due_Date','Sales','Engineer','PM/PC' ]

Schedule_Table = pd.DataFrame(schedule_headings)
Schedule_List = Excel_Read.values.tolist()


def create_schedule(schedule_info_array, schedule_headings):
    schedule_info_window_layout = [
        [sg.Table(values=Schedule_List, headings=schedule_headings, max_col_width=35,
                  auto_size_columns=True,
                  display_row_numbers=False,
                  justification='Left',
                  num_rows=10,
                  enable_events=True,
                  enable_click_events=True,
                  key='-SCHEDULE_TABEL-',
                  row_height=35)]
    ]

    Schedule_info_window = sg.Window('Schedule Info', schedule_info_window_layout, modal=True)

    while True:
        event, values = Schedule_info_window.read()
        if event in (sg.WINDOW_CLOSED, 'Exit'):
            break
        if event == '-SCHEDULE_TABEL-':
            print(values['-SCHEDULE_TABEL-'][0])
            #name = Schedule_List[(values['-SCHEDULE_TABEL-'][0])][4],
            #print(type(Schedule_List[0][3]))
            #print(Schedule_List)

解决方法

1. 全局转换Timestamp格式

读取Excel后直接处理日期列,将Pandas Timestamp转为date对象或指定格式的字符串,PySimpleGUI的Table组件能正常识别这两种类型:

# 读取Excel后处理Due_Date列
Excel_Read['Due_Date'] = pd.to_datetime(Excel_Read['Due_Date']).dt.date  # 转为date对象
# 若需要特定字符串格式,比如'YYYY-MM-DD',用下面的代码
# Excel_Read['Due_Date'] = pd.to_datetime(Excel_Read['Due_Date']).dt.strftime('%Y-%m-%d')

2. 修正代码中的冗余与错误

  • 移除无用的Schedule_Table = pd.DataFrame(schedule_headings)代码,这行创建的是错误的DataFrame,对后续逻辑无帮助
  • 修正表格组件的key拼写错误:-SCHEDULE_TABEL-改为-SCHEDULE_TABLE-
  • Excel路径前加r避免转义字符问题:r'C:\pythonProject\Schedule\Project_Schedule.xlsx'

3. 完整修正后的代码

import PySimpleGUI as sg
import pandas as pd
from datetime import datetime

# 读取Excel并处理日期列,路径加r避免转义
Excel_Read = pd.read_excel(r'C:\pythonProject\Schedule\Project_Schedule.xlsx', sheet_name='Schedule')
# 将Timestamp转为date对象
Excel_Read['Due_Date'] = pd.to_datetime(Excel_Read['Due_Date']).dt.date

schedule_headings = ['Priority', 'Project_Name','Project_Num','Due_Date','Sales','Engineer','PM/PC' ]
Schedule_List = Excel_Read.values.tolist()


def create_schedule(schedule_info_array, schedule_headings):
    schedule_info_window_layout = [
        [sg.Table(values=Schedule_List, headings=schedule_headings, max_col_width=35,
                  auto_size_columns=True,
                  display_row_numbers=False,
                  justification='Left',
                  num_rows=10,
                  enable_events=True,
                  enable_click_events=True,
                  key='-SCHEDULE_TABLE-',
                  row_height=35)]
    ]

    Schedule_info_window = sg.Window('Schedule Info', schedule_info_window_layout, modal=True)

    while True:
        event, values = Schedule_info_window.read()
        if event in (sg.WINDOW_CLOSED, 'Exit'):
            break
        if event == '-SCHEDULE_TABLE-':
            selected_row_idx = values['-SCHEDULE_TABLE-'][0]
            print(Schedule_List[selected_row_idx])

# 调用函数显示窗口
create_schedule(Schedule_List, schedule_headings)

内容的提问来源于stack exchange,提问作者Pephy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 18:57:16