2012-06-02 42 views
3

的背景顏色我試圖(但沒有任何反應)wxPython中,更改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() 

回答

3

我的第一反應是打電話txt.Refresh(),因爲我有類似的使用wx.TextCtrl的經歷,其中背景顏色沒有更新,並且Refresh()調用強制重繪。但是,這似乎是不正確的。

查看StyledTextCtrl API之後,好像SetBackground()不是您想要的功能。我的理解是,因爲STC可以在同一個框中有多個樣式,所以單獨的文本樣式優先於STC的設置。

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

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

只要記住,如果你使用多個樣式,你可能需要進行調用爲每一個這種方法。

---編輯---
我忘了通過輸入一些文本來檢查我的代碼。事實證明,如果您所做的只是撥打SyleSetBackground(),就像我上面所建議的那樣,當您輸入文本時,輸入文本的背景仍然是白色,而不是預期的紅色。

多一點研究,我已經discoved通過設置背景顏色後調用下面的代碼,這是很容易固定:

txt.StyleClearAll() 

我的猜測是,當你創建StyledTextCtrl,其文本樣式設置相當於wx.stc.STC_STYLE_DEFAULT。到現在爲止還挺好。但是,在此之後,我們更改默認樣式的值(通過將背景設爲紅色),現在文本樣式和默認樣式不同。因此,我們需要撥打StyleClearAll()將所有樣式重置爲默認樣式(現在有紅色背景)。

+1

我剛剛給問題添加了代碼,你能告訴我它是否可以在你的計算機上使用嗎?,我試着刷新小部件,但是沒有任何進展。 – user1357159

+0

太棒了!你知道爲什麼你輸入一些文本後,文本背景是白色的,以及如何解決它? – user1357159

+1

@ user1357159多一點研究,我更新了我的答案。希望它現在可以工作。 – acattle

1

這個作品在我的電腦就好

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

你是什麼操作系統上的變化?

+0

即時通訊使用Windows Vista 32位,你可以發佈你試過的代碼嗎?我想看看是否適用於我 – user1357159

+0

這裏是我的代碼:「self.txt = wx.TextCtrl(self,-1,'',pos =(10,10),size =(100,-1)) self.txt.SetBackgroundColour((255,0,0))「 –

+1

您犯了同樣的錯誤,您認爲wx.TextCtrl和wx.stc.StyledTextCtrl以相同的方式操作。原來他們沒有。 – acattle

相關問題