【问题标题】:HOW to convert a Stringvar into a date如何将 Stringvar 转换为日期
【发布时间】:2021-08-17 15:12:52
【问题描述】:
def btw_show():
    date_s = datetime.date.today()
    date_w = StringVar()
    date_w.set(date_s)

    date_input = Entry(root, width=16, font=("aial", 30), textvariable=date_w, background='black', foreground='cyan')
    date_input.pack(anchor='se')
    btn.destroy()

    date_w.get()

date_w如何转换成date

顺便说一句:我导入了我需要的所有东西。

【问题讨论】:

  • 您的代码与预期有何不同?
  • 是不是要把StringVar的内容转换成datetime.date
  • 你尝试了什么? datetimestrptimestring parse time
  • 更好地显示最少的工作代码并更好地描述问题,因为我在代码中看到了完全不同的问题——你试图在错误的时刻得到date_w。您尝试在 displayin Entry 之后直接获取时间,但 GUI 不像 input() 那样工作 - 它不会等待您的数据,而是直接运行 date_w.get() 并且您尝试在更改 @987654333 中的文本之前获取值@。将文本放入Entry 后,您需要其他按钮来运行其他功能 - 此功能将获得正确的值。

标签: python string date tkinter


【解决方案1】:

datetime 具有函数strptime(字符串解析时间)将字符串转换为datetime。稍后你可以得到date()

import datetime

dt = datetime.datetime.strptime("2021.08.17", "%Y.%m.%d")

date = dt.date()

print(date)

顺便说一句:

我在您的示例代码中发现了其他问题。您尝试在显示Entry 后直接从Entry 获取文本。但是Entry 不像input() 那样工作-它不会等待您的更改-因此您在显示Entry 后直接从Entry 获取文本-然后才能更改Entry 中的任何内容

import tkinter as tk  # PEP8: `import *` is not preferred
import datetime

def get_date():
    dt = datetime.datetime.strptime(date_w.get(), "%Y-%m-%d")
    date = dt.date()
    print(date)
    
def show_entry():
    global btn
    
    btn.destroy()

    date_input = tk.Entry(root, textvariable=date_w)
    date_input.pack()
    
    btn = tk.Button(root, text='Get Date', command=get_date)
    btn.pack()

# --- main ---

root = tk.Tk()

date_w = tk.StringVar(root, value=datetime.date.today())

btn = tk.Button(root, text='Show Entry', comman=show_entry)
btn.pack()

root.mainloop()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-15
    • 2011-04-14
    • 2010-11-03
    • 2020-03-19
    • 2012-08-12
    相关资源
    最近更新 更多