Найти - Пользователи
Полная версия: PyQT тип окна
Начало » GUI » PyQT тип окна
1
Edith
Доброго времени суток!
Такое дело, хочу написать некий аналог rainmeter только более узкоспециализированный под свои нужды
поэтому хочется спросить возможно ли такое реализовать на Python?
Оригинальный rainmeter написан на с++ но учить его долго и муторно)
Сейчас поподробнее, что я хочу:
Скачав qt designer я увидела, что есть возможность создавать только 2 типа окна
Обычное с кнопками свернуть/развернуть/закрыть
и модульное типа Утилита с кнопкой закрыть.
Мне же нужно создать окно которое было бы вообще без рамок и кнопок виндовса, прозрачное (для того чтобы сделать окно своим дизайном)
и при этом чтобы оно было по типу “утилита” то есть не отображалось на панели задач. Чтобы это окно можно было использовать как виджет “рейнметра”.
Сейчас несколько скриншотов для наглядности:
Аналог рейнметра я писала в программе DevelNext которая позволяет как раз создавать такие типы окон
http://screenshot.ru/3e43d607c52c4cdfe93d16b63cfeaf21.png
(скриншот большой поэтому ссылкой)
но DevelNext базируется на java FX и там по сути виджеты отражаются не совсем корректно как надо, то бишь перекрывают весь экран
и находятся всегда поверх всех окон.

И к сожалению пофиксить это нельзя. Поэтому теряется весь смысл такой программы и от DN пришлось отказаться.
В оригинальном же rainmeter виджеты отображаются только на рабочем столе и НЕ перекрывают остальные окна/приложения

Теперь собственно вопрос:
Можно ли реализовать это на питоне используя PyQT?
Чтобы окна (виджеты) были в произвольном дизайне без всяких там окантовок

и НЕ светились бы на панели задач?
Если такое реализуемо, я бы хотела попросить показать простецкий пример создания такого окна + реализацию его внутри окна экрана монитора
то бишь чтобы окно не выходило за пределы высоты/ширины экрана и стыковалось к краям экрана.
PEHDOM
простой пример, полностью прозрачное окно, не отображается на панели задач, на нем два элемента надпись, и кнопка.
 import sys
from PyQt4 import QtGui
from PyQt4 import QtCore
class MainWindow(QtGui.QWidget):
    def __init__(self ,parent=None):
        super().__init__(parent)
        # окно без рамок и заголовка, не отображается на панели задач
        self.setWindowFlags(QtCore.Qt.FramelessWindowHint|QtCore.Qt.Tool)
        # прозрачный бек окна
        self.setAttribute(QtCore.Qt.WA_TranslucentBackground)
        #self.setAttribute(QtCore.Qt.WA_PaintOnScreen) # работает только в X11
        grid = QtGui.QGridLayout(self)
        self.setLayout(grid)
        label = QtGui.QLabel(text='PRESS THE BUTTON - >') # какойто текст
        btn = QtGui.QPushButton('Close',self)   # кнопака выхода иначе хрен закроеш
        btn.clicked.connect(self.close)
        grid.addWidget(label , 0, 0)
        grid.addWidget(btn , 0, 1)
        grid.setAlignment(QtCore.Qt.AlignCenter)
        # привязка к разрешению экрана
        desktop = QtGui.QApplication.desktop()
        screen01 = desktop.primaryScreen() # у меня 2 монитора, определяем главный
        # получаем разрешение нужного монитора
        res = desktop.screenGeometry(screen01)
        # устанавливаем размер откна по размеру монитора
        self.setFixedSize(res.width(), res.height())
        # перемещаем окно чтобы оно заняло весь монитор
        self.move(0, 0)
        self.show()
    def close(self):
        self.hide()
        QtGui.qApp.quit()
if __name__ == '__main__':
    app = QtGui.QApplication(sys.argv)
    mainWindow=MainWindow()
    sys.exit(app.exec_())
Edith
PEHDOM
простой пример, полностью прозрачное окно, не отображается на панели задач, на нем два элемента надпись, и кнопка.
Спасибо огромное! Прямо то, что нужно!
немного подправила правда под pyQt5 а то чет pyQT4 не ставится
Could not find a version that satisfies the requirement PyQt4 (from versions: )
No matching distribution found for PyQt4

ну да мне под 5-ю все равно надо было

И малюсенький вопросик еще: не подскажете, есть ли какой-то визуальный редактор для питона, в котором можно было бы окна создавать включая такие (под виджеты раб стола)
А то вот смотрю в QT designer можно только стандартные окна делать.
PEHDOM
Edith
И малюсенький вопросик еще: не подскажете, есть ли какой-то визуальный редактор для питона, в котором можно было бы окна создавать включая такие
Чтото о таком не слышал.. Все ручками делать. Создавать свои классы наследуя от стандартных виджетов и переопределяя например paintEvent или использовать таблицы стилей.
http://www.doc.crossplatform.ru/qt/4.6.x/stylesheet.html
Или если уж совсем нужно чтото “непотребное” изобразить типа радиального комбобокса, то можно посмотреть в сторону QGraphicsScene/QGraphicsView но там еще всеселее. Вот пару примеров:
https://habrahabr.ru/post/139933/
https://pro-prof.com/archives/1117
Еще есть QML он позволяет делать сколь угодно анимированные приложения и под него есть визуальный редактор Qt Quick Designer , но он(QML) больше заточен под мобильные пальценажимательные девайсы, хотя можно и под Вендой. например:
https://habrahabr.ru/post/326268/
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB