GTK: создайте цветную обычную кнопку

Первой части Вашего вопроса (как получить байты) уже ответили другие: посмотрите в System.Text.Encoding пространство имен.

я обращусь к Вашему последующему вопросу: почему необходимо выбрать кодирование? Почему Вы не можете получить это от самого строкового класса?

ответ находится в двух частях.

, В первую очередь, байты, используемые внутренне строковым классом , не имеют значения , и каждый раз, когда Вы предполагаете, что они делают Вы, вероятно, представляете ошибку.

, Если Ваша программа полностью в.Net мире тогда, Вы не должны волноваться о получении массивов байтов для строк вообще даже при отправке данных через сеть. Вместо этого используйте.Net Сериализацию для волнения о передаче данных. Вы больше не волнуетесь о фактических байтах: средство форматирования Сериализации делает это для Вас.

, С другой стороны, что, если Вы отправляете эти байты куда-нибудь, что Вы не можете гарантировать, вытянет в данных из.Net сериализованного потока? В этом случае определенно необходимо волноваться о кодировании, потому что, очевидно, эта внешняя система заботится. Таким образом, снова внутренние байты, используемые строкой, не имеют значения: необходимо выбрать кодирование, таким образом, можно быть явными об этом кодировании на принимающем конце, даже если это - то же кодирование, используемое внутренне.Net.

я понимаю, что в этом случае Вы могли бы предпочесть использовать фактические байты, сохраненные строковой переменной в памяти, если это возможно, с идеей, что это могло бы сохранить некоторую работу, создающую Ваш поток байтов. Однако я поместил его в Вас, это просто не важно по сравнению с проверкой, что Ваш вывод понят с другой стороны, и гарантировать, что Вы должны быть явными с Вашим кодированием. Кроме того, если Вы действительно хотите соответствовать своим внутренним байтам, можно уже просто выбрать Unicode кодирование и получить ту производительность сбережения.

, Который приносит мне к второй части... выбирающей Unicode, кодирование сообщение.Net для использования базовых байтов. Действительно необходимо выбрать это кодирование, потому что, когда некоторый новомодный Unicode - Плюс выходит.Net время выполнения должно быть свободно использовать эту более новую, лучшую модель кодирования, не повреждая программу. Но, в настоящий момент (и обозримое будущее), просто выбрав кодирование Unicode дает Вам, что Вы хотите.

также важно понять, что Ваша строка должна быть переписана для проводного соединения, и это включает, по крайней мере, некоторый перевод комбинации двоичных разрядов , даже когда Вы используете соответствие, кодирующее . Компьютер должен составлять вещи как Большой по сравнению с Прямым порядком байтов, сетевым порядком байтов, пакетированием, информацией о сессии, и т.д.

5
задан Glorfindel 5 April 2019 в 04:59
поделиться

1 ответ

Вот небольшой пример:

import gtk

win = gtk.Window()
win.connect("destroy", gtk.main_quit)

btn = gtk.Button("test")

#make a gdk.color for red
map = btn.get_colormap() 
color = map.alloc_color("red")

#copy the current style and replace the background
style = btn.get_style().copy()
style.bg[gtk.STATE_NORMAL] = color

#set the button's style to the one you created
btn.set_style(style)

win.add(btn)
win.show_all()

gtk.main()
15
ответ дан 18 December 2019 в 11:59
поделиться
Другие вопросы по тегам:

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