2 回答

TA貢獻1799條經驗 獲得超6個贊
這里的問題是 QWidget 類不支持 border 屬性(請直接查看此答案和Qt 樣式表文檔)。
也就是說,將 QWidget 更改為 QFrame 可以達到目的:
import sys
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QWidget, QApplication, QFrame
class SomeWidget(QFrame):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.setStyleSheet('border:10px solid green')
class mainWidget(QWidget):
def __init__(self, **kwargs):
super().__init__(**kwargs)
widget = SomeWidget(self)
widget.setWindowFlags(Qt.FramelessWindowHint | Qt.Window)
widget.resize(self.width() // 2, self.height() // 2)
widget.show()
if __name__ == "__main__":
app = QApplication(sys.argv)
mw = mainWidget()
mw.show()
sys.exit(app.exec_())

TA貢獻1898條經驗 獲得超8個贊
嘗試一下:
import sys
from PyQt5.QtWidgets import QWidget, QApplication, QTextEdit
from PyQt5.QtCore import Qt
from PyQt5.Qt import *
class SomeWidget(QWidget):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
# self.setStyleSheet('background: #0ff; border: 10px solid green')
self.widget = QWidget(self)
self.widget.setObjectName('Custom_Widget')
self.widget.setStyleSheet('''
QWidget#Custom_Widget {
background: rgba( 255, 155, 155, 170);
border-radius: 20px;
border: 10px solid green;
}
''')
self.v = QVBoxLayout(self)
self.v.setContentsMargins(0, 0, 0, 0)
self.v.addWidget(self.widget)
class MainWidget(QWidget):
def __init__(self,**kwargs):
super().__init__(**kwargs)
widget = SomeWidget(self)
widget.setWindowFlags(Qt.FramelessWindowHint | Qt.Window)
widget.setAttribute(Qt.WA_TranslucentBackground) # +++
widget.resize(self.width()//2, self.height()//2)
widget.move(100, 100) # +++
widget.show()
self.setStyleSheet('background:#00f;')
def test1(): # ???
return 0,1
if __name__ == "__main__":
app = QApplication(sys.argv)
mw = MainWidget()
mw.show()
sys.exit(app.exec_())
添加回答
舉報