GTK+3 меняет цвет текста в метке (малиновый пи)

** Если это в локальном хосте вы можете просто понюхать его. Взгляните на ngrep, tcdpump или wirehark.

ngrep -q "." "port 80"

В качестве альтернативы вы можете использовать socat в цикле.

2
20.03.2019, 14:57
3 ответа

Боже мой. Я документирую это, чтобы никто не страдал так, как страдал я.

Если вы хотите управлять своим текстом во время выполнения, ни при каких обстоятельствах не используйте Glade для установки цвета переднего плана с помощью атрибутов редактирования. Если вы это сделаете, вы НАСТОЯТЕЛЬНО установите цвет текста таким образом, что ни изменения css, ни разметка pango, ни устаревшие функции, такие как gtk _widget _mod _fg, не смогут коснуться во время выполнения.

Вы по-прежнему можете использовать css для изменения цвета фона метки, но чтобы получить собственный цвет и фон текста, я использую разметку gtk _label _set _с

<span background=\"#0022ff\" foreground=\"#ff0044\">

с успехом. ПОСЛЕ удаления всех атрибутов со всех моих ярлыков в Glade.

GTK — это кошмар; Я никогда раньше не встречал в Linux ничего, что заставило бы меня тосковать по Windows, но это сделало это.

6
27.01.2020, 21:58

GTK уродлив, отчасти из-за всех устаревших вещей. Они не исправляли проблемы, они латали вокруг них.

Во всяком случае, это только что началось, это также на форумах raspberrypi.org.err — это int, btcprice и oldprice — числа с плавающей запятой, markup и errstr — это 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);

Цвет текста красный, если цена падает, зеленый, если она растет, оранжевый, если есть ошибка. g _strdup _printf ()немного похож на printf или snprintf, но преобразует число с плавающей запятой в строку, цвет которой меняется в зависимости от значения числа с плавающей запятой.

1
27.01.2020, 21:58

Вот вариант приведенного выше кода, который представляет собой функцию обратного вызова, которая реагирует на щелчок по метке(на кнопку _на нажатие _на сигнал события)и изменяет текст и цвет метки на основе метки. текущий текст. На Raspberry Pi работает нормально. Спасибо, парни.

void on_block_01_pwr_button_press_event()
{   GtkWidget *label=GTK_WIDGET(block_01_pwr);
    const gchar * txt;
    char *format;
    gchar *markup;
    txt=gtk_label_get_text((GtkLabel *) block_01_pwr);
    int x=strcmp("pwr #1", txt);
    if(x==0)
    {   txt="pwr #2";
        format="<span foreground=\"#40c0c0\">%s</span>";
        markup=g_markup_printf_escaped(format,txt);
    }
    else 
    {   x=strcmp("pwr #2", txt);
        if(x==0){txt="pwr off";
        format="<span foreground=\"#999999\">%s</span>";
        markup=g_markup_printf_escaped(format,txt);
                }
        else 
        {txt="pwr #1";
    format="<span foreground=\"#000000\">%s</span>";
    markup=g_markup_printf_escaped(format,txt);
        }
    }
    gtk_label_set_text((GtkLabel *) block_01_pwr, txt);
    gtk_label_set_markup(GTK_LABEL (label), markup);
    g_free(markup);
// Add code here to set this block's power pack # (or off) and data array entry
}
1
27.01.2020, 21:58

Теги

Похожие вопросы