Here is the code that shows the issue (note: using python3.7, wxPython 4.0.6).
There are three horizontal sizers (with pad of 5).
- Each horizontal sizer has 3
hyperlinkctrl
widgets, set to align left, centre and right respectively (pad of 5).
- The first sizer has widgets without
wxSHAPED
and proportion=1
.
- The second sizer has widgets with
wxSHAPED
and proportion=0
.
- The third sizer has widgets with
wxSHAPED
and proportion=1
(directly set in python file as wxglade wont allow it).
Interestingly, the clipping of the hypherlinkctrl
happens when padding is set and proportion=0
, but not when proportion=1
.
Here is the python code.
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
#
# generated by wxGlade 0.9.9pre on Tue Sep 3 10:15:07 2019
#
import wx
import wx.adv
# begin wxGlade: dependencies
# end wxGlade
# begin wxGlade: extracode
# end wxGlade
class MyFrame(wx.Frame):
def __init__(self, *args, **kwds):
# begin wxGlade: MyFrame.__init__
kwds["style"] = kwds.get("style", 0) | wx.DEFAULT_FRAME_STYLE
wx.Frame.__init__(self, *args, **kwds)
self.SetSize((436, 302))
self.SetTitle("frame")
sizer_1 = wx.BoxSizer(wx.VERTICAL)
sizer_2 = wx.StaticBoxSizer(wx.StaticBox(self, wx.ID_ANY, "without wxSHAPED"), wx.HORIZONTAL)
sizer_1.Add(sizer_2, 0, wx.ALL | wx.EXPAND, 5)
self.hyperlink_1 = wx.adv.HyperlinkCtrl(self, wx.ID_ANY, "hyperlink_1", "")
sizer_2.Add(self.hyperlink_1, 1, wx.ALIGN_CENTER | wx.ALL, 5)
self.hyperlink_2 = wx.adv.HyperlinkCtrl(self, wx.ID_ANY, "hyperlink_2", "", style=wx.adv.HL_ALIGN_CENTRE)
sizer_2.Add(self.hyperlink_2, 1, wx.ALIGN_CENTER | wx.ALL, 5)
self.hyperlink_3 = wx.adv.HyperlinkCtrl(self, wx.ID_ANY, "hyperlink_3", "", style=wx.adv.HL_ALIGN_RIGHT)
sizer_2.Add(self.hyperlink_3, 1, wx.ALIGN_CENTER | wx.ALL, 5)
sizer_3 = wx.StaticBoxSizer(wx.StaticBox(self, wx.ID_ANY, "with wxSHAPED, proportion=0"), wx.HORIZONTAL)
sizer_1.Add(sizer_3, 0, wx.ALL | wx.EXPAND, 5)
self.hyperlink_4 = wx.adv.HyperlinkCtrl(self, wx.ID_ANY, "hyperlink_4", "")
sizer_3.Add(self.hyperlink_4, 0, wx.ALIGN_CENTER | wx.ALL | wx.SHAPED, 5)
self.hyperlink_5 = wx.adv.HyperlinkCtrl(self, wx.ID_ANY, "hyperlink_5", "", style=wx.adv.HL_ALIGN_CENTRE)
sizer_3.Add(self.hyperlink_5, 0, wx.ALIGN_CENTER | wx.ALL | wx.SHAPED, 0)
self.hyperlink_6 = wx.adv.HyperlinkCtrl(self, wx.ID_ANY, "hyperlink_6", "", style=wx.adv.HL_ALIGN_RIGHT)
sizer_3.Add(self.hyperlink_6, 0, wx.ALIGN_CENTER | wx.ALL | wx.SHAPED, 5)
sizer_4 = wx.StaticBoxSizer(wx.StaticBox(self, wx.ID_ANY, "with wxSHAPED, proportion=1"), wx.HORIZONTAL)
sizer_1.Add(sizer_4, 0, wx.ALL | wx.EXPAND, 5)
#!
#! NOTE: manually added proportion=1 as wxglade resets it to zero if wxSHAPED is selected !!
#!
proportion = 1
self.hyperlink_7 = wx.adv.HyperlinkCtrl(self, wx.ID_ANY, "hyperlink_7", "")
sizer_4.Add(self.hyperlink_7, proportion, wx.ALIGN_CENTER | wx.ALL | wx.SHAPED, 5)
self.hyperlink_8 = wx.adv.HyperlinkCtrl(self, wx.ID_ANY, "hyperlink_8", "", style=wx.adv.HL_ALIGN_CENTRE)
sizer_4.Add(self.hyperlink_8, proportion, wx.ALIGN_CENTER | wx.ALL | wx.SHAPED, 0)
self.hyperlink_9 = wx.adv.HyperlinkCtrl(self, wx.ID_ANY, "hyperlink_9", "", style=wx.adv.HL_ALIGN_RIGHT)
sizer_4.Add(self.hyperlink_9, proportion, wx.ALIGN_CENTER | wx.ALL | wx.SHAPED, 5)
self.SetSizer(sizer_1)
self.Layout()
# end wxGlade
# end of class MyFrame
class MyApp(wx.App):
def OnInit(self):
self.frame = MyFrame(None, wx.ID_ANY, "")
self.SetTopWindow(self.frame)
self.frame.Show()
return True
# end of class MyApp
if __name__ == "__main__":
test_hypherlinkctrl = MyApp(0)
test_hypherlinkctrl.MainLoop()
This is the wxglade project file.
<?xml version="1.0"?>
<!-- generated by wxGlade 0.9.9pre on Tue Sep 3 10:15:06 2019 -->
<application class="MyApp" encoding="UTF-8" for_version="3.0" header_extension=".h" indent_amount="4" indent_symbol="space" is_template="0" language="python" mark_blocks="1" name="test_hypherlinkctrl" option="0" overwrite="1" path="test_hyperlinkctrl.py" source_extension=".cpp" top_window="frame" use_gettext="0" use_new_namespace="1">
<object class="MyFrame" name="frame" base="EditFrame">
<size>436, 302</size>
<title>frame</title>
<style>wxDEFAULT_FRAME_STYLE</style>
<object class="wxBoxSizer" name="sizer_1" base="EditBoxSizer">
<orient>wxVERTICAL</orient>
<object class="sizeritem">
<option>0</option>
<border>5</border>
<flag>wxALL|wxEXPAND</flag>
<object class="wxStaticBoxSizer" name="sizer_2" base="EditStaticBoxSizer">
<orient>wxHORIZONTAL</orient>
<label>without wxSHAPED</label>
<object class="sizeritem">
<option>1</option>
<border>5</border>
<flag>wxALL|wxALIGN_CENTER</flag>
<object class="wxHyperlinkCtrl" name="hyperlink_1" base="EditHyperlinkCtrl">
<label>hyperlink_1</label>
<attribute>1</attribute>
</object>
</object>
<object class="sizeritem">
<option>1</option>
<border>5</border>
<flag>wxALL|wxALIGN_CENTER</flag>
<object class="wxHyperlinkCtrl" name="hyperlink_2" base="EditHyperlinkCtrl">
<style>wxHL_ALIGN_CENTRE</style>
<label>hyperlink_2</label>
<attribute>1</attribute>
</object>
</object>
<object class="sizeritem">
<option>1</option>
<border>5</border>
<flag>wxALL|wxALIGN_CENTER</flag>
<object class="wxHyperlinkCtrl" name="hyperlink_3" base="EditHyperlinkCtrl">
<style>wxHL_ALIGN_RIGHT</style>
<label>hyperlink_3</label>
<attribute>1</attribute>
</object>
</object>
</object>
</object>
<object class="sizeritem">
<option>0</option>
<border>5</border>
<flag>wxALL|wxEXPAND</flag>
<object class="wxStaticBoxSizer" name="sizer_3" base="EditStaticBoxSizer">
<orient>wxHORIZONTAL</orient>
<label>with wxSHAPED, proportion=0</label>
<object class="sizeritem">
<option>0</option>
<border>5</border>
<flag>wxALL|wxALIGN_CENTER|wxSHAPED</flag>
<object class="wxHyperlinkCtrl" name="hyperlink_4" base="EditHyperlinkCtrl">
<label>hyperlink_4</label>
<attribute>1</attribute>
</object>
</object>
<object class="sizeritem">
<option>0</option>
<border>0</border>
<flag>wxALL|wxALIGN_CENTER|wxSHAPED</flag>
<object class="wxHyperlinkCtrl" name="hyperlink_5" base="EditHyperlinkCtrl">
<style>wxHL_ALIGN_CENTRE</style>
<label>hyperlink_5</label>
<attribute>1</attribute>
</object>
</object>
<object class="sizeritem">
<option>0</option>
<border>5</border>
<flag>wxALL|wxALIGN_CENTER|wxSHAPED</flag>
<object class="wxHyperlinkCtrl" name="hyperlink_6" base="EditHyperlinkCtrl">
<style>wxHL_ALIGN_RIGHT</style>
<label>hyperlink_6</label>
<attribute>1</attribute>
</object>
</object>
</object>
</object>
<object class="sizeritem">
<option>0</option>
<border>5</border>
<flag>wxALL|wxEXPAND</flag>
<object class="wxStaticBoxSizer" name="sizer_4" base="EditStaticBoxSizer">
<orient>wxHORIZONTAL</orient>
<label>with wxSHAPED, proportion=1</label>
<object class="sizeritem">
<option>0</option>
<border>5</border>
<flag>wxALL|wxALIGN_CENTER|wxSHAPED</flag>
<object class="wxHyperlinkCtrl" name="hyperlink_7" base="EditHyperlinkCtrl">
<label>hyperlink_7</label>
<attribute>1</attribute>
</object>
</object>
<object class="sizeritem">
<option>0</option>
<border>0</border>
<flag>wxALL|wxALIGN_CENTER|wxSHAPED</flag>
<object class="wxHyperlinkCtrl" name="hyperlink_8" base="EditHyperlinkCtrl">
<style>wxHL_ALIGN_CENTRE</style>
<label>hyperlink_8</label>
<attribute>1</attribute>
</object>
</object>
<object class="sizeritem">
<option>0</option>
<border>5</border>
<flag>wxALL|wxALIGN_CENTER|wxSHAPED</flag>
<object class="wxHyperlinkCtrl" name="hyperlink_9" base="EditHyperlinkCtrl">
<style>wxHL_ALIGN_RIGHT</style>
<label>hyperlink_9</label>
<attribute>1</attribute>
</object>
</object>
</object>
</object>
</object>
</object>
</application>
Hope that helps.
Brendan.