【问题标题】:Wxpython gui for task scheduler用于任务调度程序的 Wxpython gui
【发布时间】:2013-04-12 06:05:52
【问题描述】:

我被要求开发一个类似于任务调度程序中的触发窗口的 GUI。我正在尽我最大的努力去做,我被困在一个框架中创建多个面板。下面是我的 GUI 假设的快照看起来像。请帮帮我。

【问题讨论】:

  • 如果“在一个框架中创建多个面板”有问题,请向我们展示您如何尝试将多个面板放在一个框架中以及如何失败的基本简单示例。

标签: python-2.7 wxpython


【解决方案1】:

我很少看到需要在一个框架内放置多个面板,除非我在做 wx.Notebook。也许这就是你正在寻找的。 wx.Notebook 易于使用,并且 wxPython 中还包含许多其他“书本”控件。这里有几个链接:

如果您确实希望框架中有多个面板,那是为了组织控件及其布局吗?我会改用sizer。 Sizer 为您提供了更多的灵活性。以下是一些相关信息:

如果你的意思是你想知道如何在面板之间切换,我已经为你提供了保障:http://www.blog.pythonlibrary.org/2010/06/16/wxpython-how-to-switch-between-panels/

【讨论】:

    【解决方案2】:

    使用 sizer 来布置我在图片上绘制的控件的位置,使其大致位于 sizer 的位置。

    蓝色 = 垂直。

    绿色 = 水平。

    【讨论】:

      【解决方案3】:

      下面是我使用 wxpython 创建的调度程序窗口。

      class SchedulerWindow(wx.Frame):
      """ This generates the GUI for Setting Window"""
      #------------------------------------------------------------------------------------
          def __init__(self, parent, id, title):
              wx.Frame.__init__(self, parent, id, title="Scheduler", style=wx.DEFAULT_FRAME_STYLE ^ wx.RESIZE_BORDER ^ wx.MAXIMIZE_BOX, size=(600,500))
              panel=wx.Panel(self)
              sizer = wx.GridBagSizer(5, 5)
              font = wx.Font(10, wx.DEFAULT, wx.NORMAL, wx.BOLD)
              self.field = wx.TextCtrl(panel,pos=(65,20),size=(400,20))
              field_lbl=wx.StaticText(panel,-1, label='Name:', pos=(20,20))
              field_lbl.SetFont(font)
              line = wx.StaticLine(panel,pos=(0,50), size=(600,1))
              #sizer.Add(line, pos=(1,30), span=(1, 5),flag=wx.EXPAND|wx.BOTTOM, border=10)
              Box=wx.StaticBox(panel,label='Settings',size=(565,200),pos=(15,60))
              Box1=wx.StaticBox(panel,label='',size=(430,120),pos=(120,120))
              boxsizer = wx.StaticBoxSizer(Box, wx.VERTICAL)
              boxsizer.Add(wx.RadioButton(panel,label="One time",pos=(25,90)),flag=wx.LEFT|wx.TOP, border=5)
              boxsizer.Add(wx.RadioButton(panel,label="Daily",pos=(25,110)),flag=wx.LEFT|wx.TOP, border=5)
              boxsizer.Add(wx.RadioButton(panel,label="Weekly",pos=(25,130)),flag=wx.LEFT|wx.TOP, border=5)
              boxsizer.Add(wx.RadioButton(panel,label="Monthly",pos=(25,150)),flag=wx.LEFT|wx.TOP, border=5)
              sizer.Add(boxsizer,pos=(5,10) ,span=(1, 5), 
                       flag=wx.EXPAND|wx.TOP|wx.LEFT|wx.RIGHT , border=10)
              wx.StaticLine(panel, pos=(100,90), size=(1,100))
              start=wx.StaticText(panel, -1, 'Start Date:', pos=(120,90))
              Time=wx.StaticText(panel, -1, 'Start Time:', pos=(350, 90))
              start.SetFont(font)
              Time.SetFont(font)
              Box2=wx.StaticBox(panel,label='Advance Settings',size=(565,200),pos=(15,280))
              boxsizer = wx.StaticBoxSizer(Box2, wx.VERTICAL)
              boxsizer.Add(wx.CheckBox(panel, -1,'Repeat task every', pos=(20,300),size=(200,25)))
      

      我想在 'start time:' textctrl 中显示时间。我尝试使用 TimePickerCtrl,但无法成功。我使用“DateCtrl”和 Calenderdialog 在“开始日期:”textctrl 中显示日历。期待通过示例提出好的建议。谢谢

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-12-12
        • 2022-08-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-04-28
        • 2012-04-21
        相关资源
        最近更新 更多