Найти - Пользователи
Полная версия: Python + Qt4 устранить мерцание окна при запуске/останове
Начало » GUI » Python + Qt4 устранить мерцание окна при запуске/останове
1
anthony3d
Я работаю в таких условиях:
На полный экран 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_()
anthony3d
Даже проще сделал!

#!/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_())

Помогите убрать мерцание под окном.
Выглядит как будто сначала белый прямоугольник нарисовали, а затем на него вывели картинку.
Может, есть способ скрывать окно до полной прорисовки. Или сделать фоновую заливку темную, чтобы не сильно в глаза бросалось…
alexbadaloff
Если вот так попробовать тоже самое будет?

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_())
anthony3d
Так вообще картинку не выводит.
Только прямоугольник белый 300х200 в левом верхнем углу.

Я пробовал через setBrush, но почему-то не работало.
Rodegast
> На полный экран linux (командой startx prog из консоли) запущено приложение.

Оно у тебя без оконного менеджера работает? Попробый что то вроде
x.setWindowFlags(QtCore.Qt.SplashScreen)
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