簡體   English   中英

wxPython,更改StyledTextCtrl的背景顏色

[英]wxPython ,Change the background colour of a StyledTextCtrl

我試過(但沒有任何反應)

    self.txt.SetBackgroundColour ((255,0,0))

如標題中所述,我正在嘗試更改背景顏色StyledTextCtrl。 有誰知道可以使用的方法? 我檢查了API文檔,但我似乎無法找到它, http://wxpython.org/docs/api/wx.stc.StyledTextCtrl-class.html

(按背景顏色,我的意思是整個書寫區域,當然)

有誰知道我可以這樣做的方式?

編輯:

以下代碼中的背景不會更改

import wx
import wx.stc

app = wx.App(redirect=True)
top = wx.Frame(None, title="StyledTXTCtrl", size=(300,200))
txt=wx.stc.StyledTextCtrl(top)
txt.SetBackgroundColour((255,255,0))
txt.Refresh()
top.Show()
app.MainLoop()

我的第一反應是調用txt.Refresh()因為我有類似的經驗使用wx.TextCtrl,其中背景顏色沒有更新,而Refresh()調用強制重繪。 但是,似乎方法不正確。

在查看StyledTextCtrl API之后 ,似乎SetBackground()不是您想要的功能。 我的理解是,因為STC可以在同一個框中有多個樣式,所以各個文本樣式優先於STC的設置。

經過一番研究后,我找到了StyleSetBackground()函數。 這會修改默認樣式,使背景為紅色,有效地將背景設置為紅色。 你需要像這樣調用它:

txt.StyleSetBackground(wx.stc.STC_STYLE_DEFAULT, (255,0,0))

請記住,如果您使用多個樣式,則可能需要為每個樣式調用此方法。

- -編輯 - -
我忘記通過輸入一些文本來檢查我的代碼。 事實證明,如果你所做的只是SyleSetBackground()我的建議調用SyleSetBackground() ,當你輸入文本時,輸入文本的背景仍然是白色,而不是預期的紅色。

通過在設置背景顏色后調用以下代碼,可以輕松修復此問題,我已經發現了這一點:

txt.StyleClearAll()

我的猜測是,當您創建StyledTextCtrl時,它將文本樣式設置為等於wx.stc.STC_STYLE_DEFAULT 到現在為止還挺好。 但是,在此之后我們更改默認樣式的值(通過使背景變為紅色),所以現在文本樣式和默認樣式是不同的。 因此,我們需要調用StyleClearAll()將ALL STYLES重置為默認樣式(現在具有紅色背景)。

這在我的電腦上運行得很好

self.txt.SetBackgroundColour((255,0,0))

你的操作系統是什么?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM