Проект «SnakeProject» Михаила Козлова

Навигация

⇒ Python ⇐

CISCO

Voice(Asterisk\Cisco)

Microsoft

Powershell

SQL\T-SQL

FreeBSD and Nix

Общая

WEB Разработка

ORACLE SQL \ JAVA

Мото


PyQt 5: визуальные эффекты, включение виджетов, выход из программы


Рассмотрим:

1. Включение\Выключение виджета

2. Имитацию процесса со строкой прогресса(не забудьте создать произвольный(например 150 на 50 пикселей серый фон) png файл для фона со строкой прогресса)

3. Скрыть\показать окно программы

4. Прозрачность

5. Смену цветов

6. Закрытие программы

from PyQt4 import QtCore, QtGui
from PyQt4.QtCore import Qt, SIGNAL
import sys, time

class Prog(QtGui.QWidget):
    def __init__(self, parent=None):
        QtGui.QWidget.__init__(self, parent)

        self.resize(350, 250)
        self.label = QtGui.QLabel("<center>Hello!</center>")
        self.btn = QtGui.QPushButton("On\Off label")
        self.btnProgress = QtGui.QPushButton("Progress")
        self.btnVis = QtGui.QPushButton("Visible")
        self.btnOpac = QtGui.QPushButton("Opacity")
        self.btnColor = QtGui.QPushButton("Color")
        self.btnClose = QtGui.QPushButton("Close")
        self.box = QtGui.QVBoxLayout()
        self.box.addWidget(self.label)
        self.box.addWidget(self.btn)
        self.box.addWidget(self.btnProgress)
        self.box.addWidget(self.btnVis)
        self.box.addWidget(self.btnOpac)
        self.box.addWidget(self.btnColor)
        self.box.addWidget(self.btnClose)
        self.setLayout(self.box)
        
        self.connect(self.btn, QtCore.SIGNAL("clicked()"), self.des)
        self.connect(self.btnProgress, QtCore.SIGNAL("clicked()"), self.desProg)
        self.connect(self.btnVis, QtCore.SIGNAL("clicked()"), self.desVis)
        self.connect(self.btnOpac, QtCore.SIGNAL("clicked()"), self.opac)
        self.connect(self.btnColor, QtCore.SIGNAL("clicked()"), self.color)
        self.connect(self.btnClose, QtCore.SIGNAL("clicked()"), self, QtCore.SLOT("close()"))
    
    #closeEvent()
    ev = 0
    def closeEvent(self, event):
        if self.ev == 3:
            event.accept()
        elif self.ev < 3:
            event.ignore()
            self.ev += 1
    
    #Color
    def color(self):
        pal = self.palette()
        pal.setColor(QtGui.QPalette.Normal, QtGui.QPalette.Window, QtGui.QColor("DarkGreen"))
        self.setPalette(pal)
        self.label.setStyleSheet("background-color: #ffffff;")
    
    #Opacity widget
    ix = 0.0
    def opac(self):
        while self.ix <= 1.0:
            time.sleep(1)
            self.setWindowOpacity(self.ix)
            self.ix += 0.25
    
    #visible widget
    def desVis(self):
        if self.label.isVisible() == True:
            self.label.setVisible(False)
        elif self.label.isVisible() == False:
            self.label.setVisible(True)
    
    #ON\OFF widget
    a = 1
    def des(self):
        if self.a == 1:
            self.label.setDisabled(True)
            self.a = 2
        elif self.a == 2:
            self.label.setDisabled(False)
            self.a = 1
    
    #inscription over the raster image (simulation progress)
    def desProg(self):
        splash = QtGui.QSplashScreen(QtGui.QPixmap("img.png"))
        splash. showMessage ("Load data... 0%",  Qt.AlignHCenter | Qt.AlignBottom, Qt.black)
        splash.show()
        for i in range(1, 6):
            time.sleep(1)
            splash.showMessage("Load data...{0}%".format(i*20), Qt.AlignHCenter | Qt.AlignBottom, Qt.black)
            QtGui.qApp.processEvents()
            splash.show()
        splash.finish(splash)
    
app = QtGui.QApplication(sys.argv)
prog = Prog()
prog.show()
sys.exit(app.exec_())

Видео выложу на своем канале в YouTube


Комментарии пользователей

Эту новость ещё не комментировалиНаписать комментарий
Анонимам нельзя оставоять комментарии, зарегистрируйтесь!

Контакты для обмена ссылками между сайтами Видео к статьям на Youtube Сборник материалов по Cisco, Asterisk, Windows Server, Python и Django, SQL и T-SQL, FreeBSD и Linux Код обмена баннерами
Мои друзья: www.info-x.org - Информационный ресурс о ОС FreeBSD За сложными вещами простые действия Новости Ubuntu Linux Сообщество сисадминов Личный сайт skeletora Советы, помощь, инструменты для сис.админа, статическая и динамическая маршрутизация, FreeBSD

Рейтинг@Mail.ru
Рейтинг@Mail.ru Яндекс.Метрика

© Snakeproject.ru создан в 2013 году.
При копировании материала с сайта - оставьте ссылку.