При переходе на "отечественное ПО" приходится разрабатывать свой велосипед. Такие программы виджеты как Conky для показа системной информации не совсем устраивают, т.к. имеются довольно неприятные глюки. Например, в xfce на Gentoo при запуске системы у нас окно перерисовывалось, да и сам виджет выглядил "переполненным"
Пишем виджет показа IP адреса на python QT5
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
import sys
import netifaces as ni # модуль для работы с сетевыми интерфейсами
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def move2RightBottomCorner(win):
screen_geometry = QApplication.desktop().availableGeometry()
screen_size = (screen_geometry.width(), screen_geometry.height())
win_size = (win.frameSize().width(), win.frameSize().height())
x = screen_size[0] - win_size[0]
y = screen_size[1] - win_size[1]
win.move(x, y)
def initUI(self):
ni.ifaddresses('eth0')
ip = ni.ifaddresses('eth0')[ni.AF_INET][0]['addr']
lbl1 = QLabel(ip, self)
lbl1.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
lbl1.setAlignment(Qt.AlignCenter)
# Цвет нашего выводимого теста
lbl1.setStyleSheet("QLabel {color: red; font-size:40px;}")
self.layout = QGridLayout()
self.layout.addWidget(lbl1, 0, 0)
self.setLayout(self.layout)
# убираем окно с панели и скрываем рамки
self.setWindowFlags(Qt.Tool | Qt.FramelessWindowHint)
self.setGeometry(50, 50, 100, 100)
self.setAttribute(Qt.WA_TranslucentBackground)
self.move2RightBottomCorner()
self.show()
# отображаем окно в правом углу
def move2RightBottomCorner(win):
screen_geometry = QApplication.desktop().availableGeometry()
screen_size = (screen_geometry.width(), screen_geometry.height())
win_size = (win.frameSize().width(), win.frameSize().height())
x = screen_size[0] - win_size[0]
y = screen_size[1] - win_size[1]
win.move(x, y)
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
Это сам код.
Теперь чтобы его запустить нужно поставить python 3.X.X, установить pip и библиотеки для работы программы
python предполагается, что у вас в системе есть, поэтому приступаем к усановки pip
emerge --ask dev-python/pip
Далее ставим библиотеки:
pip install pyqt5
pip install netifaces
Если pip выдаст ошибку
user@calculate ~/Рабочий стол $ pip install netifaces
ERROR: (Gentoo) Please run pip with the --user option to avoid breaking python-exec
Это значит, что мы запускаем из под рута, это не рекомендутся. Обойти проблему можно с указанием флага --user
pip install pyqt5 --user
pip install netifaces --user
Запуск скрипта осуществляется:
python /home/user/ipwidget.py
В итоге получаем простой виджет, который показывет полько локальный ip