【问题标题】:QPushButton with transparent background具有透明背景的 QPushButton
【发布时间】:2018-05-31 05:09:45
【问题描述】:

如何在QPushButton中做透明背景?

我有一张背景图片,我想让按钮透明。

我尝试使用:

reg_screen_var.new_account.setStyleSheet("QPushButton {color: #F6F6F6; background: transparent}")

和:

reg_screen_var.new_account.setAttribute(Qt.WA_TranslucentBackground, True)

但我得到了这个结果:

我使用的是 Ubuntu 16.04。

完整代码:

from PyQt5.QtWidgets import (QApplication, QWidget, QLabel, QLineEdit, QPushButton)
from PyQt5.QtGui import (QPixmap, QFont, QMouseEvent)
from PyQt5.QtCore import (Qt, QEvent, pyqtSignal, QCoreApplication, QObject)
import sys

app = QApplication(sys.argv)
root = QWidget()


class RegisterScreenVar():

    def __init__(self):

        self.drop_logo = QLabel(root)
        self.drop_png = QPixmap("images/DropMeLogo.png")
        self.login_but = QLabel(root)
        self.login_but_img = QPixmap("images/Login_but.png")
        self.login_lab = QLabel('Login', root)
        self.pas_lab = QLabel('Password', root)
        self.login_box = QLineEdit(root)
        self.reg_box = QLineEdit(root)
        self.new_account = QPushButton("Don't have an account?", root)


reg_screen_var = RegisterScreenVar()


def drop_me():

    def register_screen(reg_screen_var, root, app):
        # design of register screen

        root.resize(1280, 720)
        root.move(400, 200)
        root.setWindowTitle('Drop_Me')
        root.setStyleSheet('background-image: url(images/reg_back.png);')

        reg_screen_var.login_but.setPixmap(reg_screen_var.login_but_img)
        reg_screen_var.login_but.setAttribute(Qt.WA_TranslucentBackground, True)
        reg_screen_var.login_but.move(520, 500)

        reg_screen_var.drop_logo.setPixmap(reg_screen_var.drop_png)
        reg_screen_var.drop_logo.setAttribute(Qt.WA_TranslucentBackground, True)
        reg_screen_var.drop_logo.move(370, 0)

        reg_screen_var.login_lab.setFont(QFont("OpenSans-Regular", 20, QFont.Bold))
        reg_screen_var.login_lab.setStyleSheet('QLabel {color: #F6F6F6}')
        reg_screen_var.login_lab.setAttribute(Qt.WA_TranslucentBackground, True)
        reg_screen_var.login_lab.move(580, 230)

        reg_screen_var.pas_lab.setFont(QFont("OpenSans-Regular", 20, QFont.Bold))
        reg_screen_var.pas_lab.setStyleSheet('QLabel {color: #F6F6F6}')
        reg_screen_var.pas_lab.setAttribute(Qt.WA_TranslucentBackground, True)
        reg_screen_var.pas_lab.move(550, 350)

        reg_screen_var.login_box.setFont(QFont("OpenSans-Regular", 18, QFont.Bold))
        reg_screen_var.login_box.setStyleSheet('QLineEdit {color:black; width: 300px}')
        reg_screen_var.login_box.move(470, 290)

        reg_screen_var.reg_box.setFont(QFont("OpenSans-Regular", 18, QFont.Bold))
        reg_screen_var.reg_box.setStyleSheet('QLineEdit {color:black; width: 300px}')
        reg_screen_var.reg_box.move(470, 400)

        reg_screen_var.new_account.setStyleSheet("QPushButton {color: #F6F6F6}")
        reg_screen_var.new_account.setFont(QFont("OpenSans-Regular", 10, QFont.Bold))
        reg_screen_var.new_account.setAutoFillBackground(True)
        reg_screen_var.new_account.move(540, 620)


        root.show()

        sys.exit(app.exec_())

    register_screen(reg_screen_var, root, app)

drop_me()

【问题讨论】:

  • 操作系统有这个问题?
  • 解决方案可能并不适用于所有平台。如果您还发布了一个简单的测试脚本来显示您如何创建屏幕截图中显示的窗口,这可能会有所帮助。
  • Github.com/geneus003/DropMe
  • 我在 github (github.com/Geneus003/DropMe/blob/master/DropMe.py) 上提交实际代码,或者你可以在任务中使用完整代码抱歉迟到了
  • 当我将问题顶部的两行添加到脚本中时,它在 archlinux 上对我来说很好(使用 qt-5.10.0 和 pyqt 5.9.2)。你使用的是什么特定的版本的qt和pyqt?

标签: python pyqt transparency pyqt5 qpushbutton


【解决方案1】:

在 Qt Designer Linux (Debian, Ubuntu) 中透明背景给了我黑色, 所以Qpush Button设置的样式表:

border : 0;
background: transparent;

我已经花了几个小时尝试。 :)

【讨论】:

    【解决方案2】:

    我认为是因为风格。

    app.setStyle('Fusion')
    

    给我带来了问题。尝试使用

    app.setStyle("Windows")
    

    这应该可以解决问题。但是您将无法使用“融合”样式。我还没有用其他样式测试过它。希望能解决你的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-29
      相关资源
      最近更新 更多