pyqt UI 文件 - 设置类属性

Posted

技术标签:

【中文标题】pyqt UI 文件 - 设置类属性【英文标题】:pyqt UI File - set class property 【发布时间】:2020-07-22 17:17:02 【问题描述】:

我有一个包含我的样式的 .qss 文件。 我像这样将它加载到我的应用程序中:

with open(_assets_folder + _css_file) as fh:
    main_view.setStyleSheet(fh.read())

我的视图在一个 .ui 文件中,我像这样加载到我的应用程序中:

uic.loadUi(self._views_folder + ui_file, self)

而且我可以像这样将我的 .qss 中的类应用到我的 top_label1(并且有效):

self.top_label1.setProperty('class', 'top')

***课程在我的 .qss 文件中:

.top 
    color: black;
    font-size: 82px;
    font-weight: bold;
    font-family: Arial;
    qproperty-alignment: 'AlignVCenter | AlignCenter';

我的标签在我的 .ui 文件中:

    <widget class="QLabel" name="top_label1">
     <property name="sizePolicy">
      <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
       <horstretch>0</horstretch>
       <verstretch>0</verstretch>
      </sizepolicy>
     </property>
     <property name="minimumSize">
      <size>
       <width>330</width>
       <height>120</height>
      </size>
     </property>
     <property name="baseSize">
      <size>
       <width>330</width>
       <height>120</height>
      </size>
     </property>
    </widget>

是否可以直接在 .ui 文件中设置类? QT 设计有什么选择吗?

我尝试(手动)添加以下内容,但没有成功:

     <property name="class">
      <string>top</string>
     </property>

【问题讨论】:

【参考方案1】:

您也可以在 Designer 的 Property Editor 中添加“dynamic properties”:

添加一个名为“class”的字符串属性并相应地设置名称值。

请注意,虽然可以使用点类选择器(假设设置了名为“class”的字符串属性),但您也可以使用自定义属性名称并使用方括号选择器;例如,在上述情况下,您还可以使用以下样式表:

QWidget[class="top"] 
    color: black;
    font-size: 82px;
    font-weight: bold;
    font-family: Arial;
    qproperty-alignment: 'AlignVCenter | AlignCenter';

请注意,样式表中的属性值始终是字符串,因此它们必须用引号括起来,而布尔值必须小写。 例如,如果您添加一个名为“bigFont”的布尔动态属性,样式表将如下所示:

QWidget[bigFont="true"] 
    font-size: 82px;

【讨论】:

以上是关于pyqt UI 文件 - 设置类属性的主要内容,如果未能解决你的问题,请参考以下文章

Pyqt5,AttributeError:模块'x_ui'没有属性'Ui_x'

pyqt5 添加属性-类方法用属性形式访问

设置在主类的子类中创建的 PyQt5 小部件的属性

WPF,将 DataContext 设置为同一类的属性

PyQt5类,方法和属性未在Eclipse中显示在AutoComplete中,标准类名称显示错误但程序运行

将pyqt ui文件转换成py文件