如何解决WXPython,不能让文字换行对长字的 TextCtrl 起作用
我正在尝试创建一个全屏窗口,其中带有很长标签的 statictextctrl 被放置在一个表格中,当它们很多时带有垂直滚动条。我需要做的是根据每个 statictextctrl 可用的宽度(基于每行和 hpad 的 textctrl 数量)相应地包装标签。不幸的是,当有一个很长的单词时,我无法使其工作,即使我明确地将 textctrl 样式设置为 wx.TE_BESTWRAP
(无论如何这是默认值,但我认为它是值得的)试)。知道如何实现这一目标吗?
import wx
import wx.lib.scrolledpanel as scrolled
class MyPanel(scrolled.ScrolledPanel):
def __init__(self,parent):
scrolled.ScrolledPanel.__init__(self,parent,-1)
## Configuring the panel
self.SetAutoLayout(1)
self.SetupScrolling()
self.SetScrollRate(1,40)
# needs to be called after main window's laytou,so its size is actually
# kNown and can be used to compute textctrl's width
def Build(self):
labelPerRow=7
hgap = 40
vgap = 20
label_width=int(self.GetClientSize()[0]/labelPerRow)-hgap
print("label width",label_width)
grid_sizer = wx.FlexGridSizer(labelPerRow,vgap,hgap)
self.SetSizer(grid_sizer)
i=0
for label in range(200) :
label = "very long title withaverybigwordthatdoesntfitonasinglelinesoitsquitehardtomanagewordwrap"+str(i)
title = wx.StaticText(self,label=label,style=wx.ALIGN_CENTRE_HORIZONTAL |
wx.TE_BESTWRAP)
title.Wrap(int(label_width))
grid_sizer.AddMany([(title)])
i = i+1
self.Layout()
class MyFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self,None,title="Test",style=wx.NO_BORDER)
self.Maximize(True)
frameSizer = wx.BoxSizer()
p = MyPanel(self)
frameSizer.Add(p,1,wx.EXPAND)
self.SetSizer(frameSizer)
self.Layout()
p.Build()
app = wx.App(0)
frame = MyFrame()
frame.Show()
app.MainLoop()
解决方法
这是我想出来的。我希望它对其他人有用。
基本上,它使用 <IfModule mod_rewrite.c>
RewriteEngine on
Options +FollowSymLinks
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/dist%{REQUEST_URI} -f
RewriteRule .* dist/%{REQUEST_URI} [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/app%{REQUEST_URI} -f
RewriteRule .* app/%{REQUEST_URI} [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .* /dist/main.php [L,QSA]
</IfModule>
或 RewriteRule ^ /dist/main.php [L,QSA]
计算拆分的每个组合,保留宽度适合且高度最小的标签。如果没有合适的换行符,它使用宽度最小的标签,并删除末尾的正确字符,用省略号替换它们,以使标签适合。它可以改进,例如使用最大行数或更多的文本对齐选项,但到目前为止它被证明是有效的。
请注意,如果展开的标签很长(组合数是空格数的指数),则计算所有组合可能会很耗时。
'\n'
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。