首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >PyQt5:如何在一行中同时编写clicked.connect和setStyleSheet?

PyQt5:如何在一行中同时编写clicked.connect和setStyleSheet?
EN

Stack Overflow用户
提问于 2018-07-16 01:53:08
回答 2查看 359关注 0票数 0

我想问一个初学者的问题。

在下面的代码中,我尝试在一行中编写clicked.connectsetStyleSheet。但它不起作用。有没有人可以教我如何用ONE行编写它们?

代码语言:javascript
复制
self.btn = QPushButton("Click")
self.btn.clicked.connect(self.btn.setStyleSheet("font: 15px"))

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-07-16 04:07:04

使用部分:

代码语言:javascript
复制
from functools import partial

btn.clicked.connect(partial(btn.setStyleSheet, "font: 15px"))

使用lambda:

代码语言:javascript
复制
btn.clicked.connect(lambda : btn.setStyleSheet("font: 15px"))
票数 1
EN

Stack Overflow用户

发布于 2018-07-16 03:06:03

试试看:

代码语言:javascript
复制
import sys
from PyQt5.QtCore    import *
from PyQt5.QtGui     import *
from PyQt5.QtWidgets import *

class Form(QDialog):
    def __init__(self, parent=None):
        super(Form, self).__init__(parent)
        self.setWindowTitle("Button demo")
        self.setGeometry(500, 200, 280, 180)
        self.label = QLabel()
        layout = QVBoxLayout()

        self.btn1 = QPushButton("Button1")
        self.btn1.clicked.connect(lambda:self.whichbtn(self.btn1, style="font: 15px; color: red;"))
        layout.addWidget(self.btn1)

        self.btn2 = QPushButton('image')
        self.btn2.setIcon(QIcon(QPixmap("./images/python.png")))
        self.btn2.clicked.connect(lambda:self.whichbtn(self.btn2, style="font: 20px; color: green;" ))
        layout.addWidget(self.btn2)

        self.btn3 = QPushButton("setEnabled(False)")
        self.btn3.setEnabled(False)
        layout.addWidget(self.btn3)

        self.btn4 = QPushButton("&Download")
        self.btn4.setDefault(True)               
        self.btn4.clicked.connect(lambda:self.whichbtn(self.btn4, style="font: 10px; color: blue;"))
        layout.addWidget(self.btn4)

        layout.addWidget(self.label) 
        self.setLayout(layout)         

    def whichbtn(self, btn, style):
        btn.setStyleSheet(style)
        self.label.setStyleSheet(style)
        self.label.setText(style)
        if btn.text() == "Button1":
            self.btn2.setStyleSheet("")
            self.btn4.setStyleSheet("")
        elif btn.text() == "image":
            self.btn1.setStyleSheet("")
            self.btn4.setStyleSheet("")
        else:
            self.btn1.setStyleSheet("")
            self.btn2.setStyleSheet("")

if __name__ == '__main__':
    app = QApplication(sys.argv)
    btnDemo = Form()
    btnDemo.show()
    sys.exit(app.exec_())

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51350752

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档