当前位置: 首页 > 知识库问答 >
问题:

wxPython添加具有多个选择选项的帧

丌官玺
2023-03-14

让我知道如何完成它。

总共有3个街区。。1.标题2.导航3.主要内容。。

导航块应该是多帧的...每次你选择一个选项,它需要改变...

它必须更像一个菜单导航

导入随机导入wx

类TabPanel1(wx.面板): #---------------------------------------------------------------------- def init(自我,父): """""" wx。Panel.init(自我,父母=父母)

    colors = ["red", "blue", "gray", "yellow", "green"]
    self.SetBackgroundColour(random.choice(colors))

panel1 = wx.Panel(self,size=(400,100))
panel1.SetBackgroundColour('#4f5049')

panel1gs = wx.GridSizer(2,2,1,2)

panel1gs.AddMany( [ (wx.StaticText(self,label='FirstLabel'),0,wx.EXPAND),
        (wx.StaticText(self,label='SecondLabel'),0,wx.EXPAND),
        (wx.StaticText(self,label='ThirdLabel'),0,wx.EXPAND),
        (wx.StaticText(self,label='FourthLabel'),0,wx.EXPAND)
        ] )

panel1.SetSizer(panel1gs)

panel2 = wx.Panel(self,size=(400,100))
panel2.SetBackgroundColour('#4f5042')

panel3 = wx.Panel(self,size=(400,100))
panel3.SetBackgroundColour('#4f5042')

    btn = wx.Button(self, label="Press Me")
    sizer = wx.BoxSizer(wx.VERTICAL)
    sizer.Add(btn, 0, wx.ALL, 5)
sizer.Add(panel1, 0, wx.ALL, 5)
sizer.Add(panel2, 0, wx.ALL, 5)
sizer.Add(panel3, 0, wx.ALL, 5)


    self.SetSizer(sizer)

类TabPanel2(wx.面板): #---------------------------------------------------------------------- def init(自我,父): """""" wx。Panel.init(自我,父母=父母)

    colors = ["red", "blue", "gray", "yellow", "green"]
    self.SetBackgroundColour(random.choice(colors))

    btn = wx.Button(self, label="Press Me")
    sizer = wx.BoxSizer(wx.VERTICAL)
    sizer.Add(btn, 0, wx.ALL, 10)

    self.SetSizer(sizer)

类DemoFrame(wx.Frame):“保存所有其他小部件的框架”

#----------------------------------------------------------------------
def __init__(self):
    """Constructor"""        
    wx.Frame.__init__(self, None, wx.ID_ANY, 
                      "Notebook Tutorial",
                      size=(800,600)
                      )
    panel = wx.Panel(self)

    notebook = wx.Notebook(panel)
    tabOne = TabPanel1(notebook)
    notebook.AddPage(tabOne, "Tab 1")

    tabTwo = TabPanel2(notebook)
    notebook.AddPage(tabTwo, "Tab 2")

    sizer = wx.BoxSizer(wx.VERTICAL)
    sizer.Add(notebook, 1, wx.ALL|wx.EXPAND, 5)
    panel.SetSizer(sizer)
    self.Layout()

    self.Show()

if name=="main": app=wx.App(False)frame=DemoFrame()app。主循环

最新变化Newcode.py

import random
import wx


########################################################################
class PanelTextCombo(wx.Panel):
     def __init__(self,parent):
    wx.Panel.__init__(self,parent=parent,size=(400,100))

    self.SetBackgroundColour('blue')

    panel1gs = wx.GridSizer(2,2,1,2)

    panel1gs.AddMany( [ (wx.StaticText(panel1,label='FirstLabel'),0),
            (wx.StaticText(panel1,label='SecondLabel'),0),
            (wx.StaticText(panel1,label='ThirdLabel'),0),
            (wx.StaticText(panel1,label='FourthLabel'),0)
            ] )



    panel1.SetSizer(panel1gs)

class TabPanel1(wx.Panel):
    #----------------------------------------------------------------------
    def __init__(self, parent):
        """"""
        wx.Panel.__init__(self, parent=parent)

        colors = ["red", "blue", "gray", "yellow", "green"]
        #self.SetBackgroundColour(random.choice(colors))
    self.SetBackgroundColour('RED')

    #panel1 = wx.Panel(self,size=(400,100))
    #panel1.SetBackgroundColour('blue')

    #panel1gs = wx.GridSizer(2,2,1,2)

    #panel1gs.AddMany( [ (wx.StaticText(panel1,label='FirstLabel'),0),
    #       (wx.StaticText(panel1,label='SecondLabel'),0),
    #       (wx.StaticText(panel1,label='ThirdLabel'),0),
    #       (wx.StaticText(panel1,label='FourthLabel'),0)
    #       ] )

    #panel1.SetSizer(panel1gs)
    panel1 = PanelTextCombo(TabPanel1)
    #panel2 = wx.Panel(self,size=(400,100))
    #panel2.SetBackgroundColour('green')

    #panel3 = wx.Panel(self,size=(400,100))
    #panel3.SetBackgroundColour('#4f5042')

        btn = wx.Button(self, label="Press Me")
        sizer = wx.BoxSizer(wx.VERTICAL)
        sizer.Add(btn, 0, wx.ALL, 5)
    sizer.Add(panel1, 0, wx.ALL, 5)
    #sizer.Add(panel2, 0, wx.ALL, 5)
    #sizer.Add(panel3, 0, wx.ALL, 5)


        self.SetSizer(sizer)

class TabPanel2(wx.Panel):
    #----------------------------------------------------------------------
    def __init__(self, parent):
        """"""
        wx.Panel.__init__(self, parent=parent)

        colors = ["red", "blue", "gray", "yellow", "green"]
        self.SetBackgroundColour(random.choice(colors))

        btn = wx.Button(self, label="Press Me")
        sizer = wx.BoxSizer(wx.VERTICAL)
        sizer.Add(btn, 0, wx.ALL, 10)

        self.SetSizer(sizer)

########################################################################
class DemoFrame(wx.Frame):
    """
    Frame that holds all other widgets
    """

    #----------------------------------------------------------------------
    def __init__(self):
        """Constructor"""        
        wx.Frame.__init__(self, None, wx.ID_ANY, 
                          "Notebook Tutorial",
                          size=(800,600)
                          )
        panel = wx.Panel(self)

        notebook = wx.Notebook(panel)
        tabOne = TabPanel1(notebook)
        notebook.AddPage(tabOne, "Tab 1")

        tabTwo = TabPanel2(notebook)
        notebook.AddPage(tabTwo, "Tab 2")

        sizer = wx.BoxSizer(wx.VERTICAL)
        sizer.Add(notebook, 1, wx.ALL|wx.EXPAND, 5)
        panel.SetSizer(sizer)
        self.Layout()

        self.Show()

#----------------------------------------------------------------------
if __name__ == "__main__":
    app = wx.App(False)
    frame = DemoFrame()
    app.MainLoop()

共有1个答案

史淳
2023-03-14

在顶部使用wx.StaticText作为标签,然后在其余部分使用wx.Notebook(或其他“book”小部件之一)。请参见以下教程:

  • http://www.blog.pythonlibrary.org/2009/12/03/the-book-controls-of-wxpython-part-1-of-2/
  • http://www.blog.pythonlibrary.org/2010/09/15/wxpython-a-simple-notebook-example/
 类似资料:
  • 问题内容: 所以,我想用香草JS做的事情很简单,但是我使用的是AngularJS,我想知道如何在框架内以最佳方式做到这一点。我想在多个选择框中更新所选的选项。我不想添加或删除任何选项。这是我的HTML外观: 使用以下数组,我想以编程方式从此列表中选择/取消选择选项: 当我在范围中设置此数组时,我希望选择框取消选择不是蓝色或红色的任何内容,然后选择蓝色和红色。我在Google网上论坛上看到的标准回复

  • 问题内容: 我想使用css在html中的选择选项之间添加某种空间(填充,边距或其他)。我已经尝试使用类似的东西: 但是没有用。我已经读过,这是可以做到的,但在IE中不起作用。无论如何,即使它无法在IE中运行,我也希望它可以在其他浏览器中运行。 PS:当前正在使用Chrome 问题答案: 选择选项的样式非常有限,因为要在操作系统中的所有应用程序之间保持一致性和一致性,因此浏览器应限制某些基本元素的样

  • 我一直在尝试更改选择选项的样式。例如添加颜色和背景似乎可以使用下面的代码。但它不起作用,例如边距:20px,边框或任何东西。一直在尝试不同的东西和JS和JQueary,但我不能让它工作,所有的提示都是欢迎的!:) null null

  • 问题内容: 我有一堆选择列表,我正在尝试向它们添加“无”和标题选项。代码如下所示: 目前,我无法将它们添加到数据中,因此我试图找到一种方法来使其正常工作。当我第一次加载它们时,“ none”选项不存在。标题在那里并且可以按预期工作,但是似乎我无法在此选择列表中添加两个空白条目。 最简单的方法是将“ none”选项添加到数据中,但这对我来说是不可能的。有没有实现我想要的正确方法? 问题答案: 没错,

  • 问题内容: 我希望此javascript在id =“ mainSelect”的选择中创建12到100个选项,因为我不想手动创建所有选项标签。你能给我一些指导吗?谢谢 问题答案: 您可以通过一个简单的循环来实现: JS Perf比较了我和imeVidas的答案,是因为我认为他的表情比我的看起来更容易理解/直观,而且我想知道这将如何转化为实现。根据Chromium14/Ubuntu11.04的说法,其

  • 问题内容: 使用核心jQuery,如何删除选择框的所有选项,然后添加一个选项并选择它? 我的选择框如下。 编辑:以下代码有助于链接。但是,(在Internet Explorer中)未选择添加的选项。(我确实在和中都使用了相同的“值” 。) 编辑:试图使其模仿此代码,每当重置页面/窗体时,我都使用以下代码。该选择框由一组单选按钮填充。距离更近,但是未像使用时那样显示选择的选项。我现有的代码没什么错-