+1 vote

Hello,
I would like to change the background color of some of the controls in my GUI (LineEdit, ItemList...).
For example on a LineEdit the background color is grey, I attach a script to this control:

extends LineEdit

var my_style = StyleBoxFlat.new()

func _ready():
    my_style.set_bg_color(Color(0,1,1,1))

But nothing changes and there is no error message. I didn't find an example in the doc. Where is my mistake.
Thank you.

in Engine by (70 points)

2 Answers

+5 votes
Best answer

You seem to be creating a new style, but not assigning it to any of the custom styles properties:

extends LineEdit

var my_style = StyleBoxFlat.new()

func _ready():
    my_style.set_bg_color(Color(0,1,1,1))

    # Set the "normal" style to be your newly created style.
    set("custom_styles/normal", my_style)

I've never actually used these so I can't guarantee that the code above is the correct syntax, but I'm quite sure you need to be setting a property to the new style, otherwise it won't be used. Hope this helps.

by (372 points)
selected by
+1 vote

It works perfectly, this kind of thing is apparently difficult to find on the doc.

Thank you so much!

by (70 points)

Please help other by accepting the answer if it solved your problem.
Also please don't post "thank you"s as answers.
Welcome to godot tho :)

It can be very tricky, I found useful to create the same thing in the editor and look at the scene .godot file content, the names are the same

Welcome to Godot Engine Q&A, where you can ask questions and receive answers from other members of the community.

Please make sure to read Frequently asked questions and How to use this Q&A? before posting your first questions.
Social login is currently unavailable. If you've previously logged in with a Facebook or GitHub account, use the I forgot my password link in the login box to set a password for your account. If you still can't access your account, send an email to webmaster@godotengine.org with your username.