样式表元素适用于 Windows,但不适用于 raspberry-pi
Posted
技术标签:
【中文标题】样式表元素适用于 Windows,但不适用于 raspberry-pi【英文标题】:Stylesheet element works in Windows but not raspberry-pi 【发布时间】:2020-05-28 20:25:53 【问题描述】:我正在 Windows 10 机器上编写程序,并将代码通过 SSH 连接到将要运行的机器 - 运行 Raspbian 的 Raspberry Pi。将一些样式表应用于某些对象时,它们在 Windows 上看起来很棒,但某些元素在 Linux 机器上却没有被拾取。
我创建了一个测试程序来显示正在发生的事情:
我在 Raspbian 机器上遇到的唯一问题是背景没有被填充。字体大小和颜色属性得到了很好的提升。我尝试过使用.autoFillBackground()
和.setAttribute(Qt.WA_StyledBackground)
,但都没有产生任何结果。
我还尝试了 QPushButton::active:
和 background:
/background-color:
的组合,但没有任何运气。
有什么想法吗?
编辑:PySide2 安装使用:
apt-get install python3-pyside2.qt3dcore python3-pyside2.qt3dinput python3-pyside2.qt3dlogic python3-pyside2.qt3drender python3-pyside2.qtcharts python3-pyside2.qtconcurrent python3-pyside2.qtcore python3-pyside2.qtgui python3-pyside2.qthelp python3-pyside2.qtlocation python3-pyside2.qtmultimedia python3-pyside2.qtmultimediawidgets python3-pyside2.qtnetwork python3-pyside2.qtopengl python3-pyside2.qtpositioning python3-pyside2.qtprintsupport python3-pyside2.qtqml python3-pyside2.qtquick python3-pyside2.qtquickwidgets python3-pyside2.qtscript python3-pyside2.qtscripttools python3-pyside2.qtsensors python3-pyside2.qtsql python3-pyside2.qtsvg python3-pyside2.qttest python3-pyside2.qttexttospeech python3-pyside2.qtuitools python3-pyside2.qtwebchannel python3-pyside2.qtwebsockets python3-pyside2.qtwidgets python3-pyside2.qtx11extras python3-pyside2.qtxml python3-pyside2.qtxmlpatterns python3-pyside2uic
来自https://forum.qt.io/topic/112813/installing-pyside2-on-raspberry-pi
import sys
from PySide2.QtWidgets import *
from PySide2.QtGui import *
from PySide2.QtCore import *
class Window(QWidget):
def __init__(self):
QWidget.__init__(self)
self.btn1 = QPushButton("Button 1")
self.btn2 = QPushButton("Button 2")
self.btn1.setStyleSheet("""background: blue; color: yellow; border: 3px solid black""")
self.btn2.setStyleSheet("background: red; color: white; font-size: 30px;")
layout = QVBoxLayout()
layout.addWidget(self.btn1)
layout.addWidget(self.btn2)
self.setLayout(layout)
app = QApplication(sys.argv)
window = Window()
window.show()
app.exec_()
【问题讨论】:
在 linux 中,它可以在 PySide2 5.14.2 和 Python 3.8.2 中正常工作(带有 KDE 的 linux arch):i.imgur.com/lPQx2B4.png。我建议您从控制台运行它,以便查看是否有任何错误 那很奇怪,那肯定和Raspbian有关。第一个按钮正确显示背景颜色很奇怪,但 btn2 没有。知道是什么原因造成的吗?我在 RPi 上安装 Pyside2 时遇到了一些麻烦,因为它使用 arm7h 架构,这显然是 PySide2 不喜欢的。可能缺少一些关键文件? 分析是否缺少库。为什么不使用 PyQt5? 我在 RPi 上安装 PyQt5 时遇到了类似的问题,但设法为 PySide2 找到了一个很长的 pip 安装程序。我也在商业环境中使用它,据我所知,您需要购买 PyQt5 的商业许可证。我不确定我在寻找什么老实说图书馆,我知道 QIcon 可以工作,所以可能只是将整个按钮替换为 QIcon。 如果用于商业用途,那么您必须从 PyQt5(Riverbank Computing)或 PySide2(Qt 公司)购买许可证,所以我认为其中一个没有优势(我没有审查花费)。当我(几年前)在 RPI 中使用 PyQt5 时,我没有遇到这些问题,你遇到的问题是多么罕见。不知道ssh是不是有问题,试试VNC吧。 【参考方案1】:Woo 好的,所以轻微的发展。我发现如果你添加一个边框,颜色就会被填充。有点奇怪,但我猜它有效。它并不理想,因为按钮会通过这样做失去其“按下”状态,但会弄乱它,看看我在哪里。
"边框:无;"也填充背景。
【讨论】:
以上是关于样式表元素适用于 Windows,但不适用于 raspberry-pi的主要内容,如果未能解决你的问题,请参考以下文章
Div 100% 高度适用于 Firefox,但不适用于 IE
Tkinter 画布图像适用于 Windows 但不适用于 OSX
样式适用于 Firefox 和 IE8,但不适用于 Chrome(居中与 text-align=left)