Python을 사용하여 앱 지표에서 Gtk.Widgets 사용


44

2010 년 Stefano Palazzo는 관련 질문을 던졌습니다. 임의 gtk.Widget을 appindicator.Indicator 에 넣고 비슷한 질문이 StackOverflow 에 요청되었습니다 . 두 경우 모두 Ubuntu의 App Indicators가 제한되어 있습니다. Michael Ekstrand는 다음과 같이 말합니다.

응용 프로그램 표시기 메뉴 지원은 D-Bus 메뉴를 기반으로합니다. D-Bus 메뉴는 지원하는 기능이 제한되어 있습니다. 임의의 위젯과 같은 이국적인 기능이 아닌 기본 메뉴 기능 만 지원합니다.

그러나 2016 년 오늘날 Bluetooth 표시기에 나타나는 것과 모순됩니다 : 토글 스위치를 사용합니다.

여기에 이미지 설명을 입력하십시오

13.04의 Ubuntu One 표시기에서도 마찬가지입니다.

여기에 이미지 설명을 입력하십시오

분명히 방법이 있습니다. 표시기 블루투스 소스 코드를 연구했지만 Vala로 작성되었습니다. 그러나 나는 주로 파이썬에서 일하고 Vala를 배우는 것은 이미 존재하는 모든 지표를 다시 작성하는 것이 너무 많은 작업입니다.

질문의 핵심 : 어떻게 파이썬을 사용하여 Gtk.Widgets를 사용하거나 블루투스 인디케이터처럼 최소한 토글 스위치를 사용할 수 있습니까?

참고 : 파이썬에서 실제 예제 제공 할 답변을 보상하기 위해이 질문에 현상금을 드리겠습니다 . 다른 언어는 허용되지 않습니다.


6
응용 프로그램 표시기는 아이콘을 즉시 지원하지도 않습니다 (파일 시스템에서 이미지 파일을로드 만합니다). 언급 한 지표는 SYSTEM 지표 (블루투스, 우분투 하나, 소리, 전력 등)입니다. 그것들은 다르며 libappindicator를 사용하지 않습니다. 나는 이미 차이점을 명확히하는 데 도움이되는 게시물을 몇 개 올렸다. 이미 C를 사용하여 작동하는 시스템 표시기가 있지만 파이썬에서는 여전히 어려움을 겪고 있습니다.
user.dz 8

2
이 질문에 우분투 핵심 개발자의 관심을 끌 수있는 방법이 있습니까?
don.joey

1
적어도 test = Gtk.CheckMenuItem("Monkey")체크 버튼을 추가하면 작동하지만 더 있어야합니다. 그 중 하나 효과가 있지만 ,이 방식 효과가 있지만 다음과 같은 것은 아닙니다 : Gtk.CheckMenuItemToggled("Monkey"). 어쨌든 작동 할 수 있다고 확신합니다. 참조 : developer.gnome.org/gtk3/stable/GtkCheckMenuItem.html
Jacob Vlijm

1
@JacobVlijm 예, 단일 메뉴 항목의 작동을 추가하는 것은, 그것은 또한 Gtk.Box를 추가하고 상자에 Gtk.Label를 추가하기 위해 노력하고 있지만, 다른 아무것도 (그것은 위젯이 하나 개의 항목 만 포함 할 수 있습니다 말한다.
세르지 Kolodyazhnyy

답변:


1

이 문제는 AppIndicators가 표시기 메뉴를 쉽게 만들 수 있지만 표시기 메뉴를 만드는 데 방해가되기 때문에 발생합니다. AppIndicator를 사용하는 예제 python 코드와 GLib 메뉴를 사용하는 예제의 블루투스 코드와의 차이점을 살펴 보겠습니다.

먼저을 만들도록 지시 gtk.Menu받았으며, 이들은 Gtk.Action더 이상 사용되지 않는 오래된 스타일의 Gtk 메뉴 객체입니다 . AppIndicator는 프로세스 gtk.Menu중에 오브젝트를 가져 와서 set_menu(...)구문 분석하여 찾은 각 메뉴를 사용하여 작성된 표시기 서비스로 푸시합니다 libdbusmenu. 이 구문 분석 프로세스는 사용자가 무엇을 하든지 AppIndicator가 지원하지 않는 모든 것을 걸러냅니다.

다음은 블루투스 메뉴를 봅시다. 이것은 Gio.Menu객체를 사용하여 만들어졌으며 GAction시스템을 사용하는 새로운 스타일의 그놈 메뉴 입니다. 그 다음은 사용하지 않고 자신의 서비스의 등록 AppIndicator또는 libdbusmenu과 세트는 사용자 정의 사용하여의의 x-canonical-type에 전달되는 스위치 위젯 만들기 위해 속성을 libido구문 분석합니다.

이 전체 연습은 Canonical 자체의 Unity 커스터마이제이션이기 때문에 매우 나쁩니다. 따라서 화합이 이루어지면 어쨌든 Appindicators가 없습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.