python - 将文本投影到透明不显眼的覆盖框上

时间:2017-11-05 13:11:51

标签: python windows

我发现some answers关于使用Python在屏幕上显示文字。有很多关于pop up messagesnotifications的内容。

但是,我正在尝试创建一个不显眼的小方框(例如,在屏幕的底部可能?)。有些东西就像透明的叠加层,当你工作时,消息会以不同的颜色弹出。就像一个独立的通知框。

我没有pygtk或tkinter的背景或任何与GUI有关(我是一名网络开发人员)。我不知道如何做到这一点,我所有的谷歌搜索都给了我在屏幕上弹出警报或与系统通知无关的例子(因为我几乎无法控制它的外观)。

我该怎么做?

1 个答案:

答案 0 :(得分:2)

在您的案例中,QT或PYQT是最好的!

为什么?!

由于您使用的是Windows并且您是Web开发人员,因此我强烈建议您安装ANACONDA。这样环境变量就会自动设置,您不必担心其他任何问题。有许多有用的包(例如pyqt,numpy,sympy,scipy)与anaconda捆绑在一起。使用pyqt或QT,您可以将样式表设置为css!或在你的风格中写下HTML代码。

请参阅:https://docs.anaconda.com/anaconda/packages/old-pkg-lists/4.3.0/py36

试试这个(基于css和pyqt的简单透明弹出窗口):

import sys
from PyQt5.QtCore import pyqtSlot
from PyQt5.QtGui import *
from PyQt5 import QtCore
from PyQt5.QtWidgets import *
from PyQt5.QtCore import pyqtSignal
from PyQt5.QtCore import *


class MyNotification(QMainWindow):

    def __init__(self):

        QMainWindow.__init__(self)

        # < Styles >
        self.background_style_css = "background-color: rgba(22, 160, 133, 100); border-radius: 4px;"
        self.close_button_style_css = """
                                        QPushButton{
                                                    background-color: none;
                                                    color: white; border-radius: 6px;
                                                    font-size: 18px;
                                                    }
                                    """
        # </ Styles >

        # < Global Settings >
        self.setFixedSize(510, 210)
        self.move(400, 30)
        # </ Global Settings >

        # < Main Style >
        self.main_back = QLabel(self)
        self.main_back.resize(500, 200)
        self.main_back.setStyleSheet(self.background_style_css)
        # </ Main Style >

        # < Text Label >
        self.text_label = QLabel(self)
        self.text_label.move(10, 5)
        self.text_label.resize(300, 100)
        self.text_label.setText("Hi YUVI, How are You ? :)")
        # < Text Label >

        # < Header Style >
        self.setWindowFlags(QtCore.Qt.FramelessWindowHint)
        self.setAttribute(QtCore.Qt.WA_TranslucentBackground)

        # This Line Set Your Window Always on To
        self.setWindowFlags(Qt.SplashScreen | Qt.WindowStaysOnTopHint)
        # </ Header Style >

    def terminal_ask(self):

        while True:

            print("If you want to close this window, type stop: ")

            get_input = input()

            if get_input.lstrip().rstrip().lower() == "stop":
                self.close_window()

            else:
                print("Invalid Syntax, Try it again.")

            QApplication.processEvents()

    def close_window(self):

        self.close()
        sys.exit()


if __name__ == '__main__':

    My_Application = QApplication(sys.argv)
    MainWindow = MyNotification()
    MainWindow.show()
    MainWindow.terminal_ask()
    sys.exit(My_Application.exec_())

注意:你可以看到,我用css的setStyleSheet()函数为我的代码的每个部分设置了一些样式!阅读我的内部评论,并自行更改此代码。

更新:

现在你有了static,always_on_top和terminal_asker窗口,如果你输入&#34; stop&#34;,它将被关闭。

祝你好运......