wxpython scrolledwindow没有显示

时间:2016-06-12 16:52:41

标签: python-2.7 wxpython

相对较新的python(2.7)并试图找出wxpython(所以我提前为任何糟糕的代码使用道歉)。我有一个GUI,我在框架上有多个可切换的面板。我需要框架是可滚动的,所以我使用了ScrolledWindow,但是现在一些低于初始框架尺寸的GUI元素在滚动时不显示。

我发现更改我的显示器分辨率可以解决问题,但我希望无论分辨率如何都能正常工作。

以下是我遇到的问题示例(不显示hi4并切断hi4)

import wx
from apanel import apanel

class simpleapp_wx(wx.Frame):
    def __init__(self,parent,id,title):
        wx.Frame.__init__(self,parent,id,title,size=(1000,1100))
        self.parent=parent
        self.scroll = wx.ScrolledWindow(self, -1)
        self.scroll.SetScrollbars(1,1,1000,1100)
        button0=wx.Button(self.scroll,-1,"hi0",(100,610))
        self.panel=apanel(self.scroll)
        self.CreateStatusBar()
        self.sizer= wx.BoxSizer(wx.VERTICAL)
        self.sizer.Add(self.panel, 1, wx.EXPAND)
        self.SetSizer(self.sizer)
        self.Show(True)

app=wx.App(False) 
frame=simpleapp_wx(None,-1,'Demo')
frame.Show()
app.MainLoop()      

和面板在另一个类中(在一个单独的文件中,我称为apanel.py)     import wx

class apanel(wx.Panel):
    def __init__(self,parent):
        wx.Panel.__init__(self,parent=parent)
        button=wx.Button(self,-1,"hi",(800,60))
        button2=wx.Button(self,-1,"hi2",(200,600))
        button3=wx.Button(self,-1,"hi3",(800,800))
        button4=wx.Button(self,-1,"hi4",(500,900))
        button5=wx.Button(self,-1,'hi5',(10,100))

1 个答案:

答案 0 :(得分:1)

我在代码中发现了一些错误,解决起来很简单。看下面的工作小组:

class simpleapp_wx(wx.Frame):
    def __init__(self,parent,id,title):
        wx.Frame.__init__(self,parent,id,title,size=(1000,1100))
        self.parent=parent

        self.scroll = wx.ScrolledWindow(self, -1)
        self.scroll.SetScrollbars(1,1,1000,1100)
        self.CreateStatusBar()

        sizer = wx.BoxSizer(wx.VERTICAL)
        self.scroll.SetSizer(sizer) # The scrolledWindow sizer
        self.panel = wx.Panel(self.scroll)
        sizer.Add(self.panel, 0, wx.EXPAND)
        button0=wx.Button(self.panel,-1,"hi0",(100,610))

说明:

  • 如果您使用滚动窗口,请创建一个sizer,并在滚动窗口中设置sizer。
  • 需要在上面创建的滚动sizer上添加面板apanel。
  • 面板没有调整大小,因为simpleapp_wx(Frame)是通过创建的BoxSizer设置的大小,顺序是反向的。
  • 如果您之后添加了一些按钮,请将apanel放在父级,而不是滚动窗口。

我建议您使用wxPython演示文档和文档:http://www.wxpython.org/download.php有很多工作示例。

祝你的wxpython学习好运!