【问题标题】:I'm facing a problem organizing my PyQt5 Gui code我在组织 PyQt5 Gui 代码时遇到问题
【发布时间】:2020-10-19 01:19:04
【问题描述】:

我正在编写一个 Pyqt5 GUI 代码,但我在组织代码时遇到了问题,尤其是通过 setStyle,因为样式太长了我该怎么办?任何建议 示例

setStyleSheet("QPushButton{ color: #b1b1b1;"
                            " background-color: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #565656, stop: 0.1 #525252, stop: 0.5 #4e4e4e, stop: 0.9 #4a4a4a, stop: 1 #464646);"
                            " border-width: 1px;"
                            " border-color: #1e1e1e;"
                            " border-style: solid;"
                            " border-radius: 6;"
                             "padding: 3px;"
                             "font-size: 20px;"
                            " padding-left: 5px;"
                             "padding-right: 5px;"
                             "min-width: 40px;"
                             "} QPushButton::hover"
                             "{"
                             "background-color : #444444; color : green"
                             "}"
                            " QPushButton:pressed"
                             "{"
                             "background-color: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 
                #2d2d2d, stop: 0.1 #2b2b2b, stop: 0.5 #292929, stop: 0.9 #282828, stop: 1 #252525);"
                             "}"
                             ";") 

【问题讨论】:

  • 有什么问题?
  • 我试图避免在我的代码中使用很长的样式,例如从 jason 文件中读取这种样式或类似的东西
  • 从文件中读取它听起来是个好主意。
  • @Izo 有什么反馈吗?请阅读How to Ask
  • 真的很抱歉,我所做的和你建议的一样,效果很好

标签: python pyqt5 qtstylesheets


【解决方案1】:

Qt 样式表基于 CSS 2.1,因此您可以使用这种格式:

style.css

QPushButton {
    color: #b1b1b1;
    background-color: QLinearGradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #565656, stop: 0.1 #525252, stop: 0.5 #4e4e4e, stop: 0.9 #4a4a4a, stop: 1 #464646);
    border-width: 1px;
    border-color: #1e1e1e;
    border-style: solid;
    border-radius: 6;
    padding: 3px;
    font-size: 20px;
    padding-left: 5px;
    padding-right: 5px;
    min-width: 40px;
}

QPushButton::hover {
    background-color: #444444;
    color: green
}

QPushButton:pressed {
    background-color: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: #2d2d2d, stop: 0.1 #2b2b2b, stop: 0.5 #292929, stop: 0.9 #282828, stop: 1 #252525);
}

*.py

with open("style.css", "r") as f:
   app.setStyleSheet(f.read())

【讨论】:

    【解决方案2】:

    拥有一个长的样式表并没有错。我的应用程序的顶级小部件中经常有一个大的样式表字符串。在 Python 中,你可以使用三个单引号来做一个多行字符串:

    style = '''
               QPushButton {
                   color: #b1b1b1;
                   background-color: QLinearGradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #565656, stop: 0.1 #525252, stop: 0.5 #4e4e4e, stop: 0.9 #4a4a4a, stop: 1 #464646);
                   border-width: 1px;
                   border-color: #1e1e1e;
                   border-style: solid;
                   border-radius: 6;
                   padding: 3px;
                   font-size: 20px;
                   padding-left: 5px;
                   padding-right: 5px;
                   min-width: 40px;
               }
    
               QPushButton::hover {
                   background-color: #444444;
                   color: green;
               }
    
               QPushButton:pressed {
                   background-color: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: #2d2d2d, stop: 0.1 #2b2b2b, stop: 0.5 #292929, stop: 0.9 #282828, stop: 1 #252525);
               } '''
    widget.setStyleSheet(style)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-10
      相关资源
      最近更新 更多