问题描述
我在wx.richtext.RichTextCtrl中有一个奇怪的行为。我有一个面板,其中包含只读的RichTextCtrl,其中包含有关对象的一些文本信息,以及一个按钮,单击后可更新内容。根据用户将光标放在RichTextCtrl上的位置的不同,未使用BeginTextColour / EndTextColour(或BeginBold / EndBold)进行格式化的每一段文字都会更改字体样式和颜色。
import wx
import wx.richtext
class MyFrame(wx.Frame):
def __init__(self):
super().__init__(parent=None,title='RichTextCtrl')
panel = wx.Panel(self)
self.richTextCtrl = wx.richtext.RichTextCtrl(panel,pos=(5,5),size=wx.Size(150,100))
self.button = wx.Button(panel,label='Update',110))
self.button.Bind(wx.EVT_BUTTON,self.buttonpressed)
self.Show()
def buttonpressed(self,event):
self.richTextCtrl.Clear()
self.richTextCtrl.BeginBold()
self.richTextCtrl.WriteText("abcd")
self.richTextCtrl.EndBold()
self.richTextCtrl.Newline()
self.richTextCtrl.WriteText("abcd")
self.richTextCtrl.Newline()
self.richTextCtrl.BeginTextColour((255,0))
self.richTextCtrl.WriteText("abcd")
self.richTextCtrl.EndTextColour()
self.richTextCtrl.Newline()
self.richTextCtrl.BeginTextColour((0,0))
self.richTextCtrl.WriteText("abcd")
self.richTextCtrl.EndTextColour()
if __name__ == '__main__':
app = wx.App()
frame = MyFrame()
app.MainLoop()
这将显示一个带有richtextctrl和按钮的窗口。单击按钮将清除richtextctrl并添加带有各种样式选项的几行文本。单击红色的文本行,然后单击“更新”按钮,将把控件中的所有内容都写在红色的Begin / EndTextColour之间。与带有粗体文本的行相同,选择它然后单击按钮会将所有文本都以粗体显示。
我不确定是否未正确使用richtextctrl还是发现了错误。
我尝试在Windows 10 64位上使用wxPython 4.0.4 + Python 3.7.5和wxPython 4.1.0 + Python 3.8.5。
解决方法
您正在从单击位置继承<TextView
android:id="@+id/name"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginLeft="16dp"
android:layout_marginTop="8dp"
android:ellipsize="end"
android:lines="1"
android:maxLines="1"
android:text="Nameeeeeeeeeeeeeeeeeeeee"
android:textSize="20sp"
app:layout_constraintEnd_toStartOf="@id/ageName"
app:layout_constraintStart_toEndOf="@+id/photo"
app:layout_constraintTop_toTopOf="parent" />
。
除非更改,否则样式仍然有效。
要解决您的问题,请在清除文本后重置样式,即
wx.TextAttr