【问题标题】:Importing Time and Date导入时间和日期
【发布时间】:2018-06-12 16:58:37
【问题描述】:

第一次使用 Tkinter 并使用我在网上找到的一些代码,我将构建一个基本的应用程序来了解所使用的术语。我想将日期和时间导入我的 GUI 窗口。我设法让时间出现在窗口中,但日期没有这样的运气。我可以在命令行中获取要打印的日期,仅此而已。

我知道这对某些人来说很简单,我们将不胜感激。我正在使用 Python 2.7。希望我正确使用这个网站!!干杯,B。

from Tkinter import *
import tkMessageBox
from datetime import datetime 
import ttk

username = ("admin")
password = ("")


def try_login():
    print("Trying to login...")
    if username_guess.get() == username:
        tkMessageBox.showinfo("COMPLETE", "You Have Now Logged In.", icon="info")
    else:
        tkMessageBox.showinfo("-- ERROR --", "Please enter valid infomation!", icon="warning")

#Gui Things
window = Tk()

#Creating the username & password entry boxes
username_text = Label(text="Username:", bg='lightgrey')
username_guess = Entry()
password_text = Label(text="Password:", bg='lightgrey')
password_guess = Entry(show="*")
#attempt to login button
attempt_login = Button(text="Login", command=try_login)
attempt_login.pack(side="bottom", fill='none', expand=False, ipadx=0, ipady=0)

username_text.pack()
username_guess.pack()
password_text.pack()
password_guess.pack()
attempt_login.pack()

#Main Starter
window.mainloop()

##time1 = ''
##clock = Label(font=('times', 10, 'bold'), bg='lightgrey')
##clock.pack(side="bottom", fill='both', expand=False, ipadx=0, ipady=0)
##
##
##def tick():
##    global time1
##    time2 = time.strftime('%H:%M:%S')
##    if time2 != time1:
##        time1 = time2
##    clock.config(text=time2)
##    clock.after(200, tick)
##tick()

【问题讨论】:

  • 除了import datetime,您似乎什么都没做。没有尝试 = 没有帮助。
  • 你说你已经成功获得了时间。请向我们展示代码。
  • 您好,我在代码末尾添加了用于导入时间的代码,我已将其注释掉,因为我认为它不适合使用。
  • 您导入了日期时间,但尚未对该导入进行任何操作。第二,您必须尝试设置时钟的代码已经过了主循环,并且不会在这里做任何事情。您不能让 GUI 元素超过主循环。在程序关闭之前,该代码不会运行。
  • 请不要将问题中的代码编辑为工作代码。通过这样做,问题变得非常混乱,因为您似乎已经有了工作代码。如果您觉得您设法使其工作的方式很有趣,请将其发布为答案。

标签: python date user-interface tkinter time


【解决方案1】:

您还没有显示您尝试获取时间的方法,所以我不知道到目前为止您的方法是什么,但是使用time 模块,您可以轻松获取日期和时间。包括很好地格式化,这是获取日期和时间的简单方法:

import time
d_and_t=time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())

有关其工作原理的信息,请参阅the time module documentation
这是制作每秒更新的 tkinter 时钟的示例:

from time import localtime, strftime, sleep #import various time functions
from tkinter import * #import tkinter
def disp(root): #a time updating function
    Label(root, text=strftime("%Y-%m-%d %H:%M:%S", localtime()), fg='green', bg='purple', font=('Times', 20, 'bold')).grid(row=0, column=0) #see below explanation
    root.after(1000, lambda:disp(root)) #after 1 second, run this again
root=Tk() #create a window
root.title('Clock') #title it Clock
disp(root) #start the updating process
mainloop() #start the tkinter mainloop

第4行说明:

  • Label(...) - 创建标签实例
  • root - 附加到主窗口
  • text=strftime(...) - 文本被分配给一些时间格式的文本
  • "%Y-%m-%d %H:%M:%S" - 我们如何格式化时间:YYYY-MM-DD HH:MM:SS
  • localtime() - 返回当地时间
  • fg='green', bg='purple', font=('Times', 20, 'bold') - 将文本格式化为绿色、紫色背景、Bold Times 字体,20 磅
  • .grid(row=0, column=0) - 每次都放在同一个地方,这样它就在上面了

【讨论】:

  • 非常感谢您的编辑。我在代码末尾添加了用于导入时间的代码,我已将其注释掉,因为我认为这不是正确的做法。再次感谢您的解释。
  • 如果这个答案解决了您的问题,您应该按下它旁边的绿色勾号将其标记为有效的解决方案。你会得到 2 个代表,我会得到 15 个。
  • 创建一个标签并更新它而不是每秒创建一个新标签不是更干净吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多