wxwidgets - 与 PyCollapsiblePane 一起使用时,ScrolledWindow 不显示 scollbars
问题描述
我遇到了一个关于wx.ScrolledWindow
包含 a的行为的问题PyCollapsiblePane
。我将示例代码放入wx.lib.agw.pycollapsiblepane
其中并稍作修改(使用wx.ScrolledWindow
对折叠/展开事件的 und 反应):
import wx
import wx.lib.agw.pycollapsiblepane as PCP
class MyFrame(wx.Frame):
def __init__(self, parent):
wx.Frame.__init__(self, parent, -1, size=wx.Size(600, 200), name="PyCollapsiblePane Demo")
self.panel = wx.ScrolledWindow(self)
title = wx.StaticText(self.panel, label="PyCollapsiblePane")
title.SetFont(wx.Font(18, wx.FONTFAMILY_SWISS, wx.FONTSTYLE _NORMAL, wx.FONTWEIGHT_BOLD))
title.SetForegroundColour("blue")
self.cp = cp = PCP.PyCollapsiblePane(self.panel, label="Some Data", style=wx.CP_DEFAULT_STYLE )
self.MakePaneContent(cp.GetPane())
self.panel.Bind(wx.EVT_COLLAPSIBLEPANE_CHANGED, self.OnPaneChanged, self.cp)
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(title, 0, wx.ALL, 25)
sizer.Add(cp, 0, wx.RIGHT | wx.LEFT | wx.EXPAND, 25)
width, height = sizer.GetMinSize()
self.panel.SetScrollbars(10, 10, width/10, height/10)
self.panel.SetSizer(sizer)
sizer.Layout()
def OnPaneChanged(self, event):
print("Re-Layout")
self.panel.Layout()
def MakePaneContent(self, pane):
''' Just makes a few controls to put on `PyCollapsiblePane`. '''
nameLbl = wx.StaticText(pane, -1, "Name:")
name = wx.TextCtrl(pane, -1, "");
addrLbl = wx.StaticText(pane, -1, "Address:")
addr1 = wx.TextCtrl(pane, -1, "");
addr2 = wx.TextCtrl(pane, -1, "");
cstLbl = wx.StaticText(pane, -1, "City, State, Zip:")
city = wx.TextCtrl(pane, -1, "", size=(150,-1));
state = wx.TextCtrl(pane, -1, "", size=(50,-1));
zip = wx.TextCtrl(pane, -1, "", size=(70,-1));
addrSizer = wx.FlexGridSizer(cols=2, hgap=5, vgap=5)
addrSizer.AddGrowableCol(1)
addrSizer.Add(nameLbl, 0, wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL)
addrSizer.Add(name, 0, wx.EXPAND)
addrSizer.Add(addrLbl, 0, wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL)
addrSizer.Add(addr1, 0, wx.EXPAND)
addrSizer.Add((5,5))
addrSizer.Add(addr2, 0, wx.EXPAND)
addrSizer.Add(cstLbl, 0, wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL)
cstSizer = wx.BoxSizer(wx.HORIZONTAL)
cstSizer.Add(city, 1)
cstSizer.Add(state, 0, wx.LEFT | wx.RIGHT, 5)
cstSizer.Add(zip)
addrSizer.Add(cstSizer, 0, wx.EXPAND)
border = wx.BoxSizer()
border.Add(addrSizer, 1, wx.EXPAND | wx.ALL, 5)
pane.SetSizer(border)
# our normal wxApp-derived class, as usual
app = wx.App(0)
frame = MyFrame(None)
app.SetTopWindow(frame)
frame.Show()
app.MainLoop()
当可折叠窗格展开时,我希望滚动窗口添加滚动条,因为不是所有内容都可以在框架中看到。但是当前的行为是没有出现滚动条。只有当使用鼠标手动调整整个窗口的大小时,滚动条才会开始出现(当可折叠窗格再次折叠时它们也不会消失)。
到目前为止我尝试过的事情:
self.Layout()
代替self.panel.Layout()
- 不同风格的
PCP.PyCollapsiblePane
- 最初展开窗格
我在用:
- wxPython 4.0.3
- Python 2.7.15
谢谢你的帮助。
解决方案
采用
self.panel.PostSizeEvent()
推荐阅读
- javascript - 如何制作一个按钮,当您单击它时会下载一个 excel 文件(phpspreadsheet)
- google-cloud-platform - bq extract - 提取操作中的 BigQuery 错误:发生内部错误,请求无法完成
- python - 如果 update.message.parse_entities(types == links_list) >>> NameError: name 'types' is not defined (Python-Telegram-Bot)
- c# - 更新实体而不影响其导航属性
- python-3.x - 熊猫中的分组列
- python - 我该如何解决 - TypeError:无法安全地将非等效 float64 转换为 int64?
- android - 从 DataSource 更新 List 后,在 PagedListAdapter 中保留先前更新的 Item
- c - 打印主要的优先级
- javascript - 用户尝试退出时使用回调提示
- azure - 在 Azure Python SDK 中实例化 Databricks 时如何提供序列化程序、反序列化程序和配置参数?