【问题标题】:Multilpe screen in wxpythonwxpython中的多个屏幕
【发布时间】:2017-10-30 22:38:59
【问题描述】:

全部。 我希望能够在多个屏幕之间切换。意思是,第一个是主要的,然后当一个按钮或外部开关被激活时,我可以看到页面#2,在那个页面中,我可能有另一个按钮可以返回到第一个,或者转到#3,等等因为我有一个大 RPM 仪表的主屏幕,但我可能想在同一页面上查看所有三个仪表,或者在另一个页面中查看原始数据,或者转到设置页面或其他地方未来的发展。我正在为我的图形使用全屏空间。也许像“隐藏”或“显示”带有某种事件的页面。到目前为止,我的每一页都有一个类脚本,但无法将它们组合在一个中。感谢您的帮助

【问题讨论】:

    标签: user-interface wxpython


    【解决方案1】:

    几年前我写过这个概念here。我继续复制了该文章中的示例:

    import wx
    import wx.grid as gridlib
    
    
    class PanelOne(wx.Panel):
        """"""    
    
        def __init__(self, parent):
            """Constructor"""
            wx.Panel.__init__(self, parent=parent)
            txt = wx.TextCtrl(self)
    
    
    class PanelTwo(wx.Panel):
        """"""    
    
        def __init__(self, parent):
            """Constructor"""
            wx.Panel.__init__(self, parent=parent)
    
            grid = gridlib.Grid(self)
            grid.CreateGrid(25,12)
    
            sizer = wx.BoxSizer(wx.VERTICAL)
            sizer.Add(grid, 0, wx.EXPAND)
            self.SetSizer(sizer)
    
    
    class MyForm(wx.Frame):    
    
        def __init__(self):
            wx.Frame.__init__(self, None, wx.ID_ANY, 
                              "Panel Switcher Tutorial")
    
            self.panel_one = PanelOne(self)
            self.panel_two = PanelTwo(self)
            self.panel_two.Hide()
    
            self.sizer = wx.BoxSizer(wx.VERTICAL)
            self.sizer.Add(self.panel_one, 1, wx.EXPAND)
            self.sizer.Add(self.panel_two, 1, wx.EXPAND)
            self.SetSizer(self.sizer)
    
    
            menubar = wx.MenuBar()
            fileMenu = wx.Menu()
            switch_panels_menu_item = fileMenu.Append(wx.ID_ANY, 
                                                      "Switch Panels", 
                                                      "Some text")
            self.Bind(wx.EVT_MENU, self.onSwitchPanels, 
                      switch_panels_menu_item)
            menubar.Append(fileMenu, '&File')
            self.SetMenuBar(menubar)    
    
        def onSwitchPanels(self, event):
            """"""
            if self.panel_one.IsShown():
                self.SetTitle("Panel Two Showing")
                self.panel_one.Hide()
                self.panel_two.Show()
            else:
                self.SetTitle("Panel One Showing")
                self.panel_one.Show()
                self.panel_two.Hide()
            self.Layout()
    
    
    # Run the program
    if __name__ == "__main__":
        app = wx.App(False)
        frame = MyForm()
        frame.Show()
        app.MainLoop()
    

    这里的基本思想是Hide() 一个面板和Show() 另一个。您可能还想查看 wxPython 提供的 Notebook 控件,因为它们具有类似的功能。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-20
      • 2018-07-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多