GTK+3 change text color in a label (raspberry pi)
I'm new to GTK+ and have spent a very frustrating 3 days trying to do something seemingly simple - change the color of text in a label on the fly at runtime. I've tried applying a css style, I've tried two depreciated methods, and none of it works. Can it even be done, and if not, why is something this simple not available?
Applying a css style on the fly partially works: when I specify
.pinkStyle {
background-color: rgb(241, 135, 135);
color: black;
}
at runtime I can see the background turn pink. But the text stays white. Help!
gtk3
add a comment |
I'm new to GTK+ and have spent a very frustrating 3 days trying to do something seemingly simple - change the color of text in a label on the fly at runtime. I've tried applying a css style, I've tried two depreciated methods, and none of it works. Can it even be done, and if not, why is something this simple not available?
Applying a css style on the fly partially works: when I specify
.pinkStyle {
background-color: rgb(241, 135, 135);
color: black;
}
at runtime I can see the background turn pink. But the text stays white. Help!
gtk3
add a comment |
I'm new to GTK+ and have spent a very frustrating 3 days trying to do something seemingly simple - change the color of text in a label on the fly at runtime. I've tried applying a css style, I've tried two depreciated methods, and none of it works. Can it even be done, and if not, why is something this simple not available?
Applying a css style on the fly partially works: when I specify
.pinkStyle {
background-color: rgb(241, 135, 135);
color: black;
}
at runtime I can see the background turn pink. But the text stays white. Help!
gtk3
I'm new to GTK+ and have spent a very frustrating 3 days trying to do something seemingly simple - change the color of text in a label on the fly at runtime. I've tried applying a css style, I've tried two depreciated methods, and none of it works. Can it even be done, and if not, why is something this simple not available?
Applying a css style on the fly partially works: when I specify
.pinkStyle {
background-color: rgb(241, 135, 135);
color: black;
}
at runtime I can see the background turn pink. But the text stays white. Help!
gtk3
gtk3
asked Jul 21 '18 at 2:03
user15001user15001
364
364
add a comment |
add a comment |
2 Answers
2
active
oldest
votes
Oh my gosh. I'm documenting this so no one will suffer the way I suffered.
If you want runtime control of your text, do not under any circumstances use Glade to set the foreground color with Edit Attributes. If you do, you have PERMANENTLY set the text color in a way that neither css changes, pango markup, or depreciated functions like gtk_widget_modify_fg can touch at runtime.
You can still use css to change the background color of the label, but to get at the text's own color and background, I'm using gtk_label_set_markup with
<span background="#0022ff" foreground="#ff0044">
with success. AFTER deleting all attributes from all my labels in Glade.
GTK is a nightmare; I've never met anything in Linux before that made me long for Windows, but this did it.
add a comment |
GTK is ugly, partly because of all the deprecated stuff. They didn't fix problems, they patched around them.
Anyway, just got this going, it's also on raspberrypi.org forums. err is an int, btcprice and oldprice are floats, markup and errstr are gchar.
if (err == 0) {
if (btcprice > oldprice)
markup = g_strdup_printf("<span foreground='green'>%.2f</span>",btcprice);
else
markup = g_strdup_printf("<span foreground='red'>%.2f</span>",btcprice);
} else {
markup = g_strdup_printf("<span foreground='orange'>%s</span>",errstr);
}
gtk_label_set_markup(GTK_LABEL(pLabel),markup);
Text color is red if the price is falling, green if it's rising, orange if there's an error. g_strdup_printf() is a little like printf or snprintf but it gets a float into a string whose color changes depending on the value of the float.
add a comment |
Your Answer
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "106"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f457584%2fgtk3-change-text-color-in-a-label-raspberry-pi%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
Oh my gosh. I'm documenting this so no one will suffer the way I suffered.
If you want runtime control of your text, do not under any circumstances use Glade to set the foreground color with Edit Attributes. If you do, you have PERMANENTLY set the text color in a way that neither css changes, pango markup, or depreciated functions like gtk_widget_modify_fg can touch at runtime.
You can still use css to change the background color of the label, but to get at the text's own color and background, I'm using gtk_label_set_markup with
<span background="#0022ff" foreground="#ff0044">
with success. AFTER deleting all attributes from all my labels in Glade.
GTK is a nightmare; I've never met anything in Linux before that made me long for Windows, but this did it.
add a comment |
Oh my gosh. I'm documenting this so no one will suffer the way I suffered.
If you want runtime control of your text, do not under any circumstances use Glade to set the foreground color with Edit Attributes. If you do, you have PERMANENTLY set the text color in a way that neither css changes, pango markup, or depreciated functions like gtk_widget_modify_fg can touch at runtime.
You can still use css to change the background color of the label, but to get at the text's own color and background, I'm using gtk_label_set_markup with
<span background="#0022ff" foreground="#ff0044">
with success. AFTER deleting all attributes from all my labels in Glade.
GTK is a nightmare; I've never met anything in Linux before that made me long for Windows, but this did it.
add a comment |
Oh my gosh. I'm documenting this so no one will suffer the way I suffered.
If you want runtime control of your text, do not under any circumstances use Glade to set the foreground color with Edit Attributes. If you do, you have PERMANENTLY set the text color in a way that neither css changes, pango markup, or depreciated functions like gtk_widget_modify_fg can touch at runtime.
You can still use css to change the background color of the label, but to get at the text's own color and background, I'm using gtk_label_set_markup with
<span background="#0022ff" foreground="#ff0044">
with success. AFTER deleting all attributes from all my labels in Glade.
GTK is a nightmare; I've never met anything in Linux before that made me long for Windows, but this did it.
Oh my gosh. I'm documenting this so no one will suffer the way I suffered.
If you want runtime control of your text, do not under any circumstances use Glade to set the foreground color with Edit Attributes. If you do, you have PERMANENTLY set the text color in a way that neither css changes, pango markup, or depreciated functions like gtk_widget_modify_fg can touch at runtime.
You can still use css to change the background color of the label, but to get at the text's own color and background, I'm using gtk_label_set_markup with
<span background="#0022ff" foreground="#ff0044">
with success. AFTER deleting all attributes from all my labels in Glade.
GTK is a nightmare; I've never met anything in Linux before that made me long for Windows, but this did it.
answered Jul 21 '18 at 2:13
user15001user15001
364
364
add a comment |
add a comment |
GTK is ugly, partly because of all the deprecated stuff. They didn't fix problems, they patched around them.
Anyway, just got this going, it's also on raspberrypi.org forums. err is an int, btcprice and oldprice are floats, markup and errstr are gchar.
if (err == 0) {
if (btcprice > oldprice)
markup = g_strdup_printf("<span foreground='green'>%.2f</span>",btcprice);
else
markup = g_strdup_printf("<span foreground='red'>%.2f</span>",btcprice);
} else {
markup = g_strdup_printf("<span foreground='orange'>%s</span>",errstr);
}
gtk_label_set_markup(GTK_LABEL(pLabel),markup);
Text color is red if the price is falling, green if it's rising, orange if there's an error. g_strdup_printf() is a little like printf or snprintf but it gets a float into a string whose color changes depending on the value of the float.
add a comment |
GTK is ugly, partly because of all the deprecated stuff. They didn't fix problems, they patched around them.
Anyway, just got this going, it's also on raspberrypi.org forums. err is an int, btcprice and oldprice are floats, markup and errstr are gchar.
if (err == 0) {
if (btcprice > oldprice)
markup = g_strdup_printf("<span foreground='green'>%.2f</span>",btcprice);
else
markup = g_strdup_printf("<span foreground='red'>%.2f</span>",btcprice);
} else {
markup = g_strdup_printf("<span foreground='orange'>%s</span>",errstr);
}
gtk_label_set_markup(GTK_LABEL(pLabel),markup);
Text color is red if the price is falling, green if it's rising, orange if there's an error. g_strdup_printf() is a little like printf or snprintf but it gets a float into a string whose color changes depending on the value of the float.
add a comment |
GTK is ugly, partly because of all the deprecated stuff. They didn't fix problems, they patched around them.
Anyway, just got this going, it's also on raspberrypi.org forums. err is an int, btcprice and oldprice are floats, markup and errstr are gchar.
if (err == 0) {
if (btcprice > oldprice)
markup = g_strdup_printf("<span foreground='green'>%.2f</span>",btcprice);
else
markup = g_strdup_printf("<span foreground='red'>%.2f</span>",btcprice);
} else {
markup = g_strdup_printf("<span foreground='orange'>%s</span>",errstr);
}
gtk_label_set_markup(GTK_LABEL(pLabel),markup);
Text color is red if the price is falling, green if it's rising, orange if there's an error. g_strdup_printf() is a little like printf or snprintf but it gets a float into a string whose color changes depending on the value of the float.
GTK is ugly, partly because of all the deprecated stuff. They didn't fix problems, they patched around them.
Anyway, just got this going, it's also on raspberrypi.org forums. err is an int, btcprice and oldprice are floats, markup and errstr are gchar.
if (err == 0) {
if (btcprice > oldprice)
markup = g_strdup_printf("<span foreground='green'>%.2f</span>",btcprice);
else
markup = g_strdup_printf("<span foreground='red'>%.2f</span>",btcprice);
} else {
markup = g_strdup_printf("<span foreground='orange'>%s</span>",errstr);
}
gtk_label_set_markup(GTK_LABEL(pLabel),markup);
Text color is red if the price is falling, green if it's rising, orange if there's an error. g_strdup_printf() is a little like printf or snprintf but it gets a float into a string whose color changes depending on the value of the float.
edited Jan 17 at 16:55
answered Jan 17 at 16:13
Alan CoreyAlan Corey
493
493
add a comment |
add a comment |
Thanks for contributing an answer to Unix & Linux Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f457584%2fgtk3-change-text-color-in-a-label-raspberry-pi%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown