Форум сайта python.su
Я работаю в таких условиях:
На полный экран linux (командой startx prog из консоли) запущено приложение.
Мне нужно добавить ему дополнительный индикатор.
Приходится его выводить отдельным окном поверх основного.
Инструмент для создания этого окна - Python + Qt4
Неприятность в том, что при появлении или исчезновении этого маленького окошка присутствует заметное мигание белым фоном.
Как его убрать?
Вот код:
#!/usr/bin/python # -*- coding: utf-8 -*- import sys from PyQt4 import QtGui, Qt, QtCore class Transparent(QtGui.QWidget): def __init__(self): QtGui.QWidget.__init__(self) self.setAttribute(Qt.Qt.WA_NoSystemBackground) self.setStyleSheet("background-color: #555555; color: #555555;") self.setAutoFillBackground(True) pixmap = QtGui.QPixmap(path) width = pixmap.width() height = pixmap.height() self.resize(width, height) self.move(336, 532) self.label = QtGui.QLabel(self) self.label.setPixmap(pixmap) if __name__ == "__main__": app = QtGui.QApplication(sys.argv) path = "/home/volmeter/meter_" + sys.argv + ".png" x = Transparent() x.show() app.exec_()
Офлайн
Даже проще сделал!
#!/usr/bin/python # -*- coding: utf-8 -*- import sys from PyQt4.QtGui import * app = QApplication(sys.argv) label = QLabel() path = "/home/volmeter/meter_" + sys.argv + ".png" pixmap = QPixmap(path) label.move(336, 532) label.setPixmap(pixmap) label.show() sys.exit(app.exec_())
Отредактировано anthony3d (Май 20, 2013 14:48:13)
Офлайн
Если вот так попробовать тоже самое будет?
from PyQt4 import QtCore, QtGui import sys app = QtGui.QApplication(sys.argv) window = QtGui.QWidget() window.setWindowTitle("Изображение в качестве фона") window.resize(300,200) # создание объекта-палитры с помощью получения текущей палитры компонента pal = window.palette() # установка цвета (3) для фона (2) состояния Normal (1) pal.setBrush(QtGui.QPalette.Normal, QtGui.QPalette.Background, QtGui.QBrush(QtGui.QPixmap("/home/volmeter/meter_" + sys.argv + ".png"))) window.setPalette(pal) window.show() sys.exit(app.exec_())
Офлайн
Так вообще картинку не выводит.
Только прямоугольник белый 300х200 в левом верхнем углу.
Я пробовал через setBrush, но почему-то не работало.
Офлайн
> На полный экран linux (командой startx prog из консоли) запущено приложение.
Оно у тебя без оконного менеджера работает? Попробый что то вроде
x.setWindowFlags(QtCore.Qt.SplashScreen)
Офлайн