如何解决Mac上的PyQt5间距和样式表问题
我将PyQt 5.9.2与Python 3.6。*结合使用来创建跨平台的桌面应用程序。仅在Mac OS上会出现此问题。 第一张图说明了图标重叠的问题。第二张图像是所需的结果。这两张图片之间的区别是PopUp类的_ init _的最后一行,我们在其中为整个应用程序设置样式表。要重现该问题,只需注释掉:
df2
最终产品花了几乎一秒钟的时间重新应用此样式表,这对于仅打开一个小的弹出窗口是不可接受的。
窗口小部件确实具有其样式,但是间距,大小和边距/填充是错误的。似乎布局没有正确计算这些属性。
我试图仅为PopUp及其子窗口小部件设置样式表,但这不起作用。 我们也已经在其他地方看到了间距差的问题,但这是最明显的例子。
我是否缺少有关构建窗口小部件的内容?我是否将布局设置错误?我的样式表有问题吗?
parent.app.setStyleSheet(open("style.qss").read())
样式表:
from PyQt5 import QtWidgets,QtCore
class Window(QtWidgets.QWidget):
def __init__(self,app):
QtWidgets.QMainWindow.__init__(self)
self.app = app
l = QtWidgets.QVBoxLayout()
self.btn = QtWidgets.QPushButton("Open Popup")
self.btn.clicked.connect(self.openPopup)
l.addWidget(self.btn)
self.setLayout(l)
def openPopup(self):
self.popup = PopUp(self)
self.popup.move(self.btn.mapToGlobal(QtCore.QPoint(self.btn.width() + 1,0)))
self.popup.show()
class PopUp(QtWidgets.QFrame):
def __init__(self,parent):
QtWidgets.QFrame.__init__(self,parent)
self.setWindowFlags(QtCore.Qt.FramelessWindowHint | QtCore.Qt.WindowStaysOnTopHint | QtCore.Qt.Popup)
self.setObjectName("PopUp")
self.setContentsMargins(0,0)
l = QtWidgets.QHBoxLayout()
l.setContentsMargins(0,0)
l.setSpacing(2)
self.edit = QtWidgets.QLineEdit("some text")
self.edit.setObjectName("CustomLineEdit")
self.edit.setAttribute(QtCore.Qt.WA_MacShowFocusRect,0)
l.addWidget(self.edit)
self.setBtn = QtWidgets.QPushButton()
self.setBtn.setObjectName("Checkmark")
self.setBtn.setFixedSize(22,22)
l.addWidget(self.setBtn)
self.cancelBtn = QtWidgets.QPushButton()
self.cancelBtn.setObjectName("RedCross")
self.cancelBtn.setFixedSize(22,22)
l.addWidget(self.cancelBtn)
self.setLayout(l)
parent.app.setStyleSheet(open("style.qss").read())
if __name__ == '__main__':
import sys
app = QtWidgets.QApplication(sys.argv)
app.setStyleSheet(open("style.qss").read())
win = Window(app)
win.show()
app.exec()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。