更改 window wxChoice 的选择大小
Changing window selection size of wxChoice
我正在开发一个 python 大字体应用程序,我使用的是 wxPython 2.8.12。当有超过 30 个项目时,这会导致 windows 用于 wx.Choice 控件的非常大的选择。我想将 Choice 子类化,以便能够在添加滚动之前设置要显示的项目数。这是方法 DoSetSize 行 570 中 choice.cpp 中的硬编码值:
size_t nItems = GetCount();
if (!HasFlag(wxCB_SIMPLE))
{
if ( !nItems )
nItems = 9;
else if ( nItems > 30 )
nItems = 30;
}
有没有办法让我以某种方式覆盖它?我已经尝试在我的子类中重写 DoGetSize 方法,但它根本不起作用。这是不可能的,因为它是在 c++ 源代码中实现的吗?
见https://wiki.wxpython.org/OverridingMethods
尽管在新的 wxPython Phoenix 中情况有所改变,并且 DoSetSize
现在在那里可以覆盖,但在这种情况下它可能对您没有任何帮助,因为其余的大部分wxChoice::DoSetSize
的 C++ 实现中的代码正在使用或设置不在 public API 中并且在 Python.
中不可用的内容
我正在开发一个 python 大字体应用程序,我使用的是 wxPython 2.8.12。当有超过 30 个项目时,这会导致 windows 用于 wx.Choice 控件的非常大的选择。我想将 Choice 子类化,以便能够在添加滚动之前设置要显示的项目数。这是方法 DoSetSize 行 570 中 choice.cpp 中的硬编码值:
size_t nItems = GetCount();
if (!HasFlag(wxCB_SIMPLE))
{
if ( !nItems )
nItems = 9;
else if ( nItems > 30 )
nItems = 30;
}
有没有办法让我以某种方式覆盖它?我已经尝试在我的子类中重写 DoGetSize 方法,但它根本不起作用。这是不可能的,因为它是在 c++ 源代码中实现的吗?
见https://wiki.wxpython.org/OverridingMethods
尽管在新的 wxPython Phoenix 中情况有所改变,并且 DoSetSize
现在在那里可以覆盖,但在这种情况下它可能对您没有任何帮助,因为其余的大部分wxChoice::DoSetSize
的 C++ 实现中的代码正在使用或设置不在 public API 中并且在 Python.