wxPython, Modificați culoarea de fundal a unui StyledTextCtrl

Am incercat (dar nu se intampla nimic)

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

As said in the title I'm trying to change the background colour StyledTextCtrl. Does anyone know a method that could be used? I've checked the API docs but I couldn't seem to find one, http://wxpython.org/docs/api/wx.stc.StyledTextCtrl-class.html

(prin culoarea de fundal, vreau sa spun intreaga zona de scris, desigur)

Știe cineva cum aș putea face asta?

EDITAȚI | ×:

Fundalul nu se modifică în următorul cod

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()
0

2 răspunsuri

Prima mea reacție a fost să apel la txt.Refresh() pentru că am avut o experiență similară folosind wx.TextCtrl unde culoarea de fundal nu sa actualizat și apelul Refresh() redesenare. Cu toate acestea, se pare că abordarea a fost incorectă.

După examinarea API-ului StyledTextCtrl , se pare că SetBackground() nu este funcția dorită. Înțelegerea mea este că, deoarece STC pot avea mai multe stiluri în aceeași casetă, stilurile individuale de text au prioritate față de setările STC.

După câteva cercetări, am găsit funcția StyleSetBackground() . Aceasta modifică stilul implicit, astfel încât fundalul va fi roșu, stabilind în mod eficient fundalul în roșu. Trebuie să spuneți așa:

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

Amintiți-vă, dacă utilizați mai multe stiluri, este posibil să trebuiască să invoca această metodă pentru fiecare.

--- EDIT ---
Am uitat să verific codul meu introducând un text. Se pare că dacă tot ce faci este să apelați SyleSetBackground() așa cum sugeram mai sus, atunci când introduceți textul, fundalul textului introdus este încă alb, nu roșul așteptat.

Un pic mai mult de cercetare și am descoperit acest lucru este ușor de stabilit prin apelarea următorului cod după setarea culorii de fundal:

txt.StyleClearAll()

Cred că atunci când creați StyledTextCtrl, acesta setează stilul de text egal cu wx.stc.STC_STYLE_DEFAULT . Până acum, bine. Cu toate acestea, după acest punct, modificăm valoarea stilului implicit (făcând culoarea roșie a fundalului), astfel încât stilul textului și stilul implicit sunt diferite. Prin urmare, trebuie să sunăm pentru a reseta StilClearAll() ALL STYLES înapoi la stilul implicit (care are acum un fundal roșu).

0
adăugat
Tocmai am adăugat un cod la întrebare, poți să-mi spui dacă funcționează pe calculatorul tău ?, Am încercat să actualizez widget-ul cu toate acestea fără progres.
adăugat autor user1357159, sursa
Foarte bine funcționează! Știți de ce, după ce introduceți un text, fundalul textului este alb și cum să remediați acest lucru?
adăugat autor user1357159, sursa
Oau grozav! Mulțumesc foarte mult pentru ajutor!
adăugat autor user1357159, sursa
@ user1357159 Un pic mai mult de cercetare și am actualizat răspunsul meu. Sperăm că funcționează acum.
adăugat autor acattle, sursa

acest lucru funcționează bine pe calculatorul meu

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

care este sistemul dvs. de operare?

0
adăugat
Im folosind Windows Vista 32-Bit, poți posta codul pe care l-ai încercat? Vreau să văd dacă asta funcționează pentru mine
adăugat autor user1357159, sursa
Ați făcut aceeași greșeală pe care am făcut-o, ați presupus că wx.TextCtrl și wx.stc.StyledTextCtrl au funcționat în același fel. Se pare că nu au.
adăugat autor acattle, sursa
aici este codul meu: "self.txt = wx.TextCtrl (auto, -1, '', pos = (10,10), size = (100, -1)) self.txt.SetBackgroundColour ((255,0, 0))“
adăugat autor Infinite_Loop, sursa
Python România
Python România
100 participanți

Comunitatea pasionaților de Python din România.