Запись индикаторов с помощью Python, GIR и GTK3

Попробуйте запустить его с помощью sudo и без пароля, например

sudo mysql -u root

и обычно вводите пароль своего пользователя, когда sudo запрашивает аутентификацию.

Существует определенная причина этого, потому что mariadb теперь настроен по умолчанию для использования плагина аутентификации «Unix socket», поэтому «root» пользователь mariadb использует те же учетные данные, что и пользователь root «[root]»

4] Вы можете изменить это поведение из пользовательской конфигурации, но будьте осторожны, он может нарушить другие процессы, которые полагаются на это или на установку нового программного обеспечения, которое использует MariaDB / MySQL.

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

Надеюсь, что это поможет.

Ссылки:

Это сообщение об ошибке сервера Это сообщение SuperUser
18
задан 27 February 2012 в 20:59

4 ответа

Это мой пробный код для gtk3 и appindicator, который создает индикатор для GPaste.

В принципе,

from gi.repository import AppIndicator3 as AppIndicator

для использования appindicator для приложений gtk3, который предоставляется package gir1.2-appindicator3.

Вот Это документация.

pygtk будет устаревшим для Gtk3, и вы должны пройти маршрут GPaste для разработки приложений Gtk3 в python. Вы можете обратиться к документации PyGObject. Вместо

import pygtk, gtk, gdk, gobject, pango  

и т. Д. Вы должны сделать

from gi.repository import Gtk, Gdk, Pango, GObject  

. Для изучения рабочего кода вы можете просмотреть pygtk , который переместился в gtk3 из gtk2 и использует appindicator3.

Существует также пакет gir1.2-appindicator, который кажется таким же, как с использованием python-appindicator, поскольку оба они обеспечивают использование для приложения gtk2, который:

from gi.repository import AppIndicator
[d16 ] OR

import appindicator

Некоторая информация в appindicator3 также.

19
ответ дан 25 May 2018 в 13:54
  • 1
    Я пошел с AppIndicator3. Но означает ли это, что AppIndicator 1 является прямым портом python-appindicator, в то время как AI3 - это новая версия, которая не является резервной копией? – Jo-Erlend Schinstad 28 February 2012 в 03:32
  • 2
    Кажется, так. Я загрузил appindicator 0.1 из оболочки python, а затем попытался загрузить appindicator3, который дал мне эту ошибку RepositoryError: Requiring namespace 'Gtk' version '3.0', but '2.0' is already loaded. Таким образом, appindicator 0.1 работает с gtk2, то есть pygtk и appindicator3 и выше, если какие-либо работы с gtk3 – sagarchalise 28 February 2012 в 10:08
  • 3
    Ах, я понял. Это не версия 3 ИИ. Это AI для GTK3 :) – Jo-Erlend Schinstad 28 February 2012 в 14:50
  • 4
    Я также заметил эту запись в блоге , в которой обсуждается использование AppIndicator3 , что может показаться вам интересным. – David Planella 28 February 2012 в 16:17
  • 5
    Просто примечание, большинство из этих ссылок мертвы. – RobotHumans 24 January 2014 в 03:44

Вот глупое простое приложение, которое имеет окно конфигурации, главное окно и индикатор приложения.

#!/usr/bin/env python3.3

from gi.repository import Gtk
from gi.repository import AppIndicator3 as appindicator

class MyIndicator:
  def __init__(self, root):
    self.app = root
    self.ind = appindicator.Indicator.new(
                self.app.name,
                "indicator-messages",
                appindicator.IndicatorCategory.APPLICATION_STATUS)
    self.ind.set_status (appindicator.IndicatorStatus.ACTIVE)
    self.menu = Gtk.Menu()
    item = Gtk.MenuItem()
    item.set_label("Main Window")
    item.connect("activate", self.app.main_win.cb_show, '')
    self.menu.append(item)

    item = Gtk.MenuItem()
    item.set_label("Configuration")
    item.connect("activate", self.app.conf_win.cb_show, '')
    self.menu.append(item)

    item = Gtk.MenuItem()
    item.set_label("Exit")
    item.connect("activate", self.cb_exit, '')
    self.menu.append(item)

    self.menu.show_all()
    self.ind.set_menu(self.menu)

  def cb_exit(self, w, data):
     Gtk.main_quit()

class MyConfigWin(Gtk.Window):
  def __init__(self, root):
    super().__init__()
    self.app = root
    self.set_title(self.app.name + ' Config Window')

  def cb_show(self, w, data):
    self.show()

class MyMainWin(Gtk.Window):
  def __init__(self, root):
    super().__init__()
    self.app = root
    self.set_title(self.app.name)

  def cb_show(self, w, data):
    self.show()

class MyApp(Gtk.Application):
  def __init__(self, app_name):
    super().__init__()
    self.name = app_name
    self.main_win = MyMainWin(self)
    self.conf_win = MyConfigWin(self)
    self.indicator = MyIndicator(self)

  def run(self):
    Gtk.main()

if __name__ == '__main__':
  app = MyApp('Scaffold')
  app.run()
10
ответ дан 25 May 2018 в 13:54

На всякий случай кто-то может найти это полезным, я сделал минимальный индикатор приложения с Python, GIR и GTK3. Он читает скорости процессора из / proc / cpuinfo каждые несколько секунд и отображает их.

См. Здесь: https://bitbucket.org/cpbotha/indicator-cpuspeed/src

9
ответ дан 25 May 2018 в 13:54

Ниже приведен пример чтения температуры процессора. скопируйте значок с именем temp-icon.png / svg в каталог сценария

from gi.repository import Gtk, GLib
from gi.repository import AppIndicator3 as appindicator
import os

def cb_exit(w, data):
   Gtk.main_quit()

def cb_readcputemp(ind_app):
# get CPU temp
   fileh = open(
      '/sys/devices/platform/thinkpad_hwmon/subsystem/devices/coretemp.0/temp1_input',
    'r')
  ind_app.set_label(fileh.read(2), '')
  fileh.close()
  return 1


ind_app = appindicator.Indicator.new_with_path (
  "cputemp-indicator",
   "temp-icon",
   appindicator.IndicatorCategory.APPLICATION_STATUS,
    os.path.dirname(os.path.realpath(__file__)))
ind_app.set_status (appindicator.IndicatorStatus.ACTIVE)

# create a menu
menu = Gtk.Menu()
menu_items = Gtk.MenuItem("Exit")
menu.append(menu_items)
menu_items.connect("activate", cb_exit, '')
menu_items.show()
ind_app.set_menu(menu)
GLib.timeout_add(500, cb_readcputemp, ind_app)
Gtk.main()
8
ответ дан 25 May 2018 в 13:54

Другие вопросы по тегам:

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