IT-SERVICES

Опубликовано: 14 сентября 2018 г. 15:51

При переходе на "отечественное ПО" приходится разрабатывать свой велосипед. Такие программы виджеты как Conky для показа системной информации не совсем устраивают, т.к. имеются довольно неприятные глюки. Например, в xfce на Gentoo при запуске системы у нас окно перерисовывалось, да и сам виджет выглядил "переполненным"

featured-image

Пишем виджет показа 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

 

 

Share on Facebook Share on LinkedIn Share on VK