⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 setup.py

📁 Wxpython Implemented on Windows CE, Source code
💻 PY
📖 第 1 页 / 共 2 页
字号:
        p = wx.StaticText(self, label="Foreground:")
        sizer.Add(p, pos=(0, 0), flag=wx.ALIGN_CENTRE_VERTICAL)

        p = self.fg = csel.ColourSelect(self)
        sizer.Add(p, pos=(0, 1), span=(1, 3), flag=wx.ALIGN_CENTRE_VERTICAL)

        p = wx.StaticText(self, label="Background:")
        sizer.Add(p, pos=(1, 0), flag=wx.ALIGN_CENTRE_VERTICAL)

        p = self.bg = csel.ColourSelect(self)
        sizer.Add(p, pos=(1, 1), span=(1, 3), flag=wx.ALIGN_CENTRE_VERTICAL)

        p = wx.StaticText(self, label="Style:")
        sizer.Add(p, pos=(2, 0), flag=wx.ALIGN_CENTRE_VERTICAL)

        p = self.ws = wx.Choice(self, choices=_window_styles)
        sizer.Add(p, pos=(2, 1), span=(1, 3), flag=wx.ALIGN_CENTRE_VERTICAL)

        box.Add(sizer)

        self.SetSizer(box)

#----------------------------------------------------------------------

class _PageBase(wx.Panel):
    def __init__(self, parent):
        wx.Panel.__init__(self, parent)

        self.clock = self.GetGrandParent().GetParent()
        self.sizer = wx.BoxSizer(wx.VERTICAL)
        self.SetSizer(self.sizer)


    def UpdateControls(self):
        [group.UpdateControls() for group in self.GetChildren()]

#----------------------------------------------------------------------

class StylesPanel(bt.ButtonTreeCtrlPanel):
    def __init__(self, parent):
        bt.ButtonTreeCtrlPanel.__init__(self, parent)

        self.clock = self.GetGrandParent().GetParent()

        root = self.AddItem("Styles")
        g1 = self.AddItem("General", parent=root)
        g2 = self.AddItem("Hours",   parent=root)
        g3 = self.AddItem("Minutes", parent=root)
        self.groups = [g1, g2, g3]

        clockStyle = self.clock.GetClockStyle()
        hourStyle, minuteStyle = self.clock.GetTickStyle()

        for label in dir(styles):
            if label.startswith("TICKS_"):
                value = bool(getattr(styles, label) & hourStyle)
                self.AddItem(label, parent=g2, style=wx.RB_SINGLE, value=value)

                value = bool(getattr(styles, label) & minuteStyle)
                self.AddItem(label, parent=g3, style=wx.RB_SINGLE, value=value)

            elif not (label.startswith("DEFAULT_") or \
                      label.startswith("_") or \
                      label in ["HOUR", "MINUTE", "SECOND", "ALL"]):
                value = bool(getattr(styles, label) & clockStyle)
                self.AddItem(label, parent=g1, style=wx.CHK_2STATE, value=value)

        self.EnsureFirstVisible()

        self.Bind(bt.EVT_CHANGED, self.OnChanged)


    def OnChanged(self, evt):
        clockStyle, hourStyle, minuteStyle = \
          [reduce(lambda x, y: x | y,
           [getattr(styles, item) \
            for item in self.GetStringItemsChecked(group)], 0) \
            for group in self.groups]

        self.clock.SetClockStyle(clockStyle)
        self.clock.SetTickStyle(hourStyle, styles.HOUR)
        self.clock.SetTickStyle(minuteStyle, styles.MINUTE)


    def UpdateControls(self):
        clockStyle = self.clock.GetClockStyle()
        hourStyle, minuteStyle = self.clock.GetTickStyle()

        [g1, g2, g3] = self.groups

        for label in dir(styles):
            if label.startswith("TICKS_"):
                item = self.GetItemByLabel(label, g2)
                value = bool(getattr(styles, label) & hourStyle)
                self.SetItemValue(item, value)

                item = self.GetItemByLabel(label, g3)
                value = bool(getattr(styles, label) & minuteStyle)
                self.SetItemValue(item, value)

            elif not (label.startswith("DEFAULT_") or \
                      label.startswith("_") or \
                      label in ["HOUR", "MINUTE", "SECOND", "ALL"]):
                item = self.GetItemByLabel(label, g1)
                value = bool(getattr(styles, label) & clockStyle)
                self.SetItemValue(item, value)

#----------------------------------------------------------------------

class HandsPanel(_PageBase):
    def __init__(self, parent):
        _PageBase.__init__(self, parent)

        [self.sizer.Add(_Group_1(self, title), 1,
                        flag=wx.EXPAND|wx.ALL, border=6) \
         for title in ["Hours", "Minutes", "Seconds"]]

#----------------------------------------------------------------------

class TicksPanel(_PageBase):
    def __init__(self, parent):
        _PageBase.__init__(self, parent)

        [self.sizer.Add(_Group_2(self, title), 1,
                        flag=wx.EXPAND|wx.ALL, border=6) \
         for title in ["Hours", "Minutes"]]

#----------------------------------------------------------------------

class MiscPanel(_PageBase):
    def __init__(self, parent):
        _PageBase.__init__(self, parent)

        self.sizer.Add(_Group_3(self, "Face"), 1,
                       flag=wx.EXPAND|wx.ALL, border=6)
        self.sizer.Add(_Group_4(self, "Window"), 1,
                       flag=wx.EXPAND|wx.ALL, border=6)

#----------------------------------------------------------------------

class Setup(wx.Dialog):
    """AnalogClock customization dialog."""

    def __init__(self, parent):
        wx.Dialog.__init__(self, parent, title="AnalogClock Setup")

        sizer = wx.BoxSizer(wx.VERTICAL)

        nb = self.nb = wx.Notebook(self)
        for s in ["Styles", "Hands", "Ticks", "Misc"]:
            page = eval(s + "Panel(nb)"); page.Fit()
            nb.AddPage(page, s)
        nb.Fit()
        sizer.Add(nb, 1, flag = wx.EXPAND|wx.ALL, border=6)

        bsizer = wx.BoxSizer(wx.HORIZONTAL)
        bsizer.Add(wx.Button(self, label="Reset"),
                   flag = wx.LEFT|wx.RIGHT, border=6)
        bsizer.Add(wx.Button(self, wx.ID_OK),
                   flag = wx.LEFT|wx.RIGHT, border=6)
        sizer.Add(bsizer, 0, flag=wx.ALIGN_RIGHT|wx.ALL, border=6)

        self.Bind(wx.EVT_SHOW, self.OnShow)
        self.Bind(wx.EVT_CLOSE, self.OnClose)
        self.Bind(wx.EVT_BUTTON, self.OnButton)

        self.customcolours = [None] * 16

        self.SetSizerAndFit(sizer)


    def OnShow(self, evt):
        if self.IsShown():
            self.UpdateControls()
        evt.Skip()


    def OnClose(self, evt):
        self.Hide()


    def OnButton(self, evt):
        if evt.GetEventObject().GetLabel() == "Reset":
            self.ResetClock()
        evt.Skip()


    def UpdateControls(self):
        wx.BeginBusyCursor()
        for i in range(self.nb.GetPageCount()):
            self.nb.GetPage(i).UpdateControls()
        wx.EndBusyCursor()


    def ResetClock(self):
        clock = self.GetParent()

        wx.BeginBusyCursor()

        clock.SetClockStyle(styles.DEFAULT_CLOCK_STYLE)
        clock.SetTickStyle(styles.TICKS_POLY, styles.HOUR)
        clock.SetTickStyle(styles.TICKS_CIRCLE, styles.MINUTE)

        clock.SetTickFont(wx.SystemSettings.GetFont(wx.SYS_DEFAULT_GUI_FONT))

        clock.SetHandBorderWidth(0)
        clock.SetTickBorderWidth(0)
        clock.SetFaceBorderWidth(0)

        clock.SetHandSize(7, styles.HOUR)
        clock.SetHandSize(5, styles.MINUTE)
        clock.SetHandSize(1, styles.SECOND)

        clock.SetTickSize(25, styles.HOUR)
        clock.SetTickSize(5,  styles.MINUTE)

        clock.SetTickOffset(0)

        clock.SetWindowStyle(wx.NO_BORDER)

        sw = wx.SystemSettings.GetColour(wx.SYS_COLOUR_3DSHADOW)
        clock.SetShadowColour(sw)

        no_color = wx.SystemSettings.GetColour(wx.SYS_COLOUR_3DFACE)
        clock.SetFaceFillColour(no_color)
        clock.SetFaceBorderColour(no_color)
        clock.SetBackgroundColour(no_color)

        fg = wx.SystemSettings.GetColour(wx.SYS_COLOUR_WINDOWTEXT)
        clock.SetForegroundColour(fg)

        self.UpdateControls()

        wx.EndBusyCursor()


#
#
### eof

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -