プリンタを選択してコンボボックスウィジェットで表示するGTKウィジェットがあります。Python GTK3 Comboboxは、テキストの太字または色付きの背景を作成します。
デフォルトのプリンタの入力を太字のまたはの赤い背景にするにはどうすればよいですか?
これを行う方法や、それが可能かどうかはわかりません。
#!/usr/bin/env python
#-*- coding: utf-8 -*-
import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk
from gi.repository import Gdk
import os
import sys
import subprocess
class SystemPrinter(Gtk.Window):
def __init__(self):
Gtk.Window.__init__(self, title="Window Name")
box = Gtk.HBox()
self.add(box)
printers, default_printer = self.get_system_printers()
default_printer_entry = 0
printers_store = Gtk.ListStore(str, int)
for n, item in enumerate(printers.items()):
printers_store.append(item)
if item[0] == default_printer:
default_printer_entry = n
printers_combo = Gtk.ComboBox.new_with_model_and_entry(printers_store)
printers_combo.set_entry_text_column(0)
printers_combo.set_active(default_printer_entry)
box.pack_start(Gtk.Label("Printer", True, True, 0), False, False, 0)
box.pack_start(printers_combo, False, False, 0)
self.show_all()
def get_system_printers(self):
printers = {}
default_printer = ""
printers_raw = subprocess.check_output("lpstat -p -d", shell=True)
n = 0
for printer in printers_raw.split("\n"):
if "printer" in printer.split(" ")[0]:
printers[printer.split(" ")[1]] = n
n += 1
elif "system" in printer.split(" ")[0]:
default_printer = printer.split(" ")[3]
return printers, default_printer
def main(self):
Gtk.main()
if __name__ == '__main__':
s = SystemPrinter()
s.main()
編集:私は、私はそれを選択する前に、コンボボックスのデフォルトのエントリを強調表示したいです!
こんにちは。それはまさに私が望むものではありません。あなたがそれを選択する前にどのエントリ/テキストがデフォルトであるかを見ることができないからです。選択後にのみ表示されます。でもありがとう。あなたの情報では、選択した項目を太字にして背景色を付けることができます: if child.get_text()== self.default_printer: child.modify_font(Pango.FontDescription( "bold")) entry_style_context.add_class "green") else: child.modify_font(なし) entry_style_context.remove_class( "green") – oxidworks
私は以前に回答していましたが、操作から戻ってきました。コンボボックスに接続されているストアからアイテムを選択することで、そのアイテムを事前に選択することができます(正しくリコールするには、「active_item」を設定します)。 – jcoppens