0

時間を選択する textctrl が必要な wxpython を使用して GUI を開発しています。TimePickerCtrl を試しましたが、時間を textctrl にフェッチできませんでした。誰かが textctrl に時間を追加し、いつでも textctrl を編集できる良いサンプル コードを共有してくれるとうれしいです。よろしくお願いします。

4

1 に答える 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()
于 2013-04-22T20:47:49.597 に答える