如何在wxpython中的textctrl中添加和编辑时间?

问题描述 投票:0回答:1

我正在使用wxpython开发GUI,其中我需要一个选择时间的textctrl。我尝试使用TimePickerCtrl,但未能将时间提取到textctrl中。如果任何人共享一个好的示例代码,这会增加一个时间到textctrl并可以随时对其进行编辑,那就太好了。谢谢!

python wxpython
1个回答
2
投票

您甚至没有看过wxPython演示吗?它显示了创建选择器控件的3种不同方法:

import wx
import wx.lib.masked as masked

class MyPanel(wx.Panel):

    def __init__(self, parent):
        wx.Panel.__init__(self, parent)
        self.mainSizer = wx.BoxSizer(wx.VERTICAL)
        # 12-hour format
        text1 = wx.StaticText( self, -1, "12-hour format:", size=(150,-1))
        self.time12 = masked.TimeCtrl( self, -1, name="12 hour control" )
        h = self.time12.GetSize().height
        spin1 = wx.SpinButton( 
                  self, -1, wx.DefaultPosition, (-1,h), wx.SP_VERTICAL )
        self.time12.BindSpinButton( spin1 )
        self.addWidgets([text1, self.time12, spin1])
        # 24-hour format
        text2 = wx.StaticText( self, -1, "24-hour format:")
        spin2 = wx.SpinButton(
                  self, -1, wx.DefaultPosition, (-1,h), wx.SP_VERTICAL )
        self.time24 = masked.TimeCtrl(
                        self, -1, name="24 hour control", fmt24hr=True,
                        spinButton = spin2
                        )
        self.addWidgets([text2, self.time24, spin2])
        # No seconds\nor spin button
        text3 = wx.StaticText( self, -1, "No seconds\nor spin button:")
        self.spinless_ctrl = masked.TimeCtrl(
                                self, -1, name="spinless control",
                                display_seconds = False
                                )
        self.addWidgets([text3, self.spinless_ctrl])
        # set sizer
        self.SetSizer(self.mainSizer)

    def addWidgets(self, widgets):
        sizer = wx.BoxSizer(wx.HORIZONTAL)
        for widget in widgets:
            if isinstance(widget, wx.StaticText):
                sizer.Add(widget, 0, wx.ALL|wx.CENTER, 5),
            else:
                sizer.Add(widget, 0, wx.ALL, 5)
        self.mainSizer.Add(sizer)

class MyFrame(wx.Frame):

    def __init__(self):
        wx.Frame.__init__(self, None, title="Spinner Demo")
        panel = MyPanel(self)
        self.Show()

if __name__ == "__main__":        
    app = wx.App(False)
    f = MyFrame()
    app.MainLoop()
© www.soinside.com 2019 - 2024. All rights reserved.