【问题标题】:how to make a simple watch in wx python如何在wx python中制作一个简单的手表
【发布时间】:2012-12-04 08:08:09
【问题描述】:

谁能告诉我,如何制作一个简单的 wxpython

  import wx
    import time

    class MyFrame(wx.Frame):
        """ We simply derive a new class of Frame. """
        def __init__(self, parent, title):
            wx.Frame.__init__(self, parent, title=title, size=(200,100))
            self.control = wx.TextCtrl(self, style=wx.TE_MULTILINE)
            self.Show(True)

    app = wx.App(False)
    frame = MyFrame(None, 'Small editor')

app.MainLoop()

我想知道我现在如何获取日期时间并将其显示在框架中

【问题讨论】:

  • 弄清楚你想在你的框架中显示什么。可以是数字时钟之类的数字,也可以是表盘时钟之类的图形。接下来,确定如何显示或绘制这些东西。这将确定您需要从 datatime 获取日期和/或时间的格式,这将是您的最终任务。
  • 我的意思是数字斗篷,没有像数字一样绘制

标签: python wxpython wxwidgets


【解决方案1】:

如果您希望在 GUI 内/内显示日期时间(作为数字,而不是时钟格式),您可以使用 wx.DateTime.Now() 函数。在 wxPython 文档here 中阅读更多详细信息。您可以输入以下内容:

now = wx.DateTime.Now()
timecheckText = wx.StaticText(panel, -1, "Sample sentence here:\t%s\n"%(now.Format("%c", wx.DateTime.PST)), (3,30))


它的作用是在 wx.StaticText 函数中输入日期时间,并在启动后打印当前日期、月份、年份、时间和时区。此外,无需“导入日期时间”,只需“导入 wx”即可。

【讨论】:

    【解决方案2】:

    “我现在想知道如何获取日期时间并将其显示在框架中”

    使用time模块获取系统时间:

    import time
    time.strftime('%d %m %Y')
    

    例如如何访问这个模块。现在在 Python 解释器中,尝试 help(time) 并阅读不同的时区命令和格式化命令,以获得所需的值。

    【讨论】:

    • 是的,我已经知道了,我对它在 GUI 中的使用方式感兴趣,我设法在 Tk 模块中制作它,但在这里我有点误解了
    【解决方案3】:

    你看过 wxPython 演示吗?您应该检查几个小部件。一个是模拟时钟。它真的很整洁。然后是 LEDNumberCtrl。有一个演示,它显示了实时更新的当前时间。

    如果您需要显示日期,请尝试 DatePickerCtrl

    更新:这是一个代码示例:

    import wx
    
    ########################################################################
    class MyPanel(wx.Panel):
        """"""
    
        #----------------------------------------------------------------------
        def __init__(self, parent):
            """Constructor"""
            wx.Panel.__init__(self, parent)
    
            sizer = wx.BoxSizer(wx.VERTICAL)
            self.SetSizer(sizer)
    
            dpc = wx.DatePickerCtrl(self, size=(120,-1),
                                    style = wx.DP_DROPDOWN
                                          | wx.DP_SHOWCENTURY
                                          | wx.DP_ALLOWNONE )
            self.Bind(wx.EVT_DATE_CHANGED, self.OnDateChanged, dpc)
            sizer.Add(dpc, 0, wx.ALL, 50)
    
            # In some cases the widget used above will be a native date
            # picker, so show the generic one too.            
            dpc = wx.GenericDatePickerCtrl(self, size=(120,-1),
                                           style = wx.TAB_TRAVERSAL
                                           | wx.DP_DROPDOWN
                                           | wx.DP_SHOWCENTURY
                                           | wx.DP_ALLOWNONE )
            self.Bind(wx.EVT_DATE_CHANGED, self.OnDateChanged, dpc)
            sizer.Add(dpc, 0, wx.LEFT, 50)
    
    
        def OnDateChanged(self, evt):
            print "OnDateChanged: %s\n" % evt.GetDate()
    
    ########################################################################
    class MyFrame(wx.Frame):
        """"""
    
        #----------------------------------------------------------------------
        def __init__(self):
            """Constructor"""
            wx.Frame.__init__(self, parent=None, title="DatePickers")
            panel = MyPanel(self)
            self.Show()
    
    #----------------------------------------------------------------------
    if __name__ == "__main__":
        app = wx.App(False)
        frame = MyFrame()
        app.MainLoop()
    

    【讨论】:

    • >如果您需要显示日期,请尝试使用 DatePickerCtrl。你能给一个简单的例子吗?请问?
    • 你看过演示吗?我刚刚从那里复制了代码
    • 那你应该看看我提到的LEDNumberCtrl
    猜你喜欢
    • 2011-03-23
    • 2017-06-27
    • 2018-01-05
    • 2011-04-24
    • 1970-01-01
    • 1970-01-01
    • 2012-09-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多