GTK+3 change text color in a label (raspberry pi)












0















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!










share|improve this question



























    0















    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!










    share|improve this question

























      0












      0








      0








      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!










      share|improve this question














      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






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Jul 21 '18 at 2:03









      user15001user15001

      364




      364






















          2 Answers
          2






          active

          oldest

          votes


















          1














          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.






          share|improve this answer































            0














            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.






            share|improve this answer

























              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
              });


              }
              });














              draft saved

              draft discarded


















              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









              1














              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.






              share|improve this answer




























                1














                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.






                share|improve this answer


























                  1












                  1








                  1







                  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.






                  share|improve this answer













                  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.







                  share|improve this answer












                  share|improve this answer



                  share|improve this answer










                  answered Jul 21 '18 at 2:13









                  user15001user15001

                  364




                  364

























                      0














                      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.






                      share|improve this answer






























                        0














                        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.






                        share|improve this answer




























                          0












                          0








                          0







                          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.






                          share|improve this answer















                          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.







                          share|improve this answer














                          share|improve this answer



                          share|improve this answer








                          edited Jan 17 at 16:55

























                          answered Jan 17 at 16:13









                          Alan CoreyAlan Corey

                          493




                          493






























                              draft saved

                              draft discarded




















































                              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.




                              draft saved


                              draft discarded














                              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





















































                              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







                              Popular posts from this blog

                              How to make a Squid Proxy server?

                              Is this a new Fibonacci Identity?

                              19世紀