0

我被要求开发一个类似于任务计划程序中的触发窗口的 GUI。我正在尽力做到这一点,但我被困在一个框架中创建多个面板。下面是我的 GUI 应该是什么样子的快照.请帮帮我。

任务调度器

4

3 回答 3

0

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

蓝色 = 垂直。

绿色 = 水平。

在此处输入图像描述

于 2013-04-12T13:50:50.060 回答
0

下面是我使用 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)))

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

于 2013-04-13T08:48:50.007 回答
0

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

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

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

于 2013-04-12T13:22:20.710 回答