Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python pyqt5边框仅适用于父窗口小部件问题_Python_Pyqt5_Border_Qwidget_Frameless - Fatal编程技术网

Python pyqt5边框仅适用于父窗口小部件问题

Python pyqt5边框仅适用于父窗口小部件问题,python,pyqt5,border,qwidget,frameless,Python,Pyqt5,Border,Qwidget,Frameless,各位。我在pyqt5中有一个奇怪的问题。 我试图更改边框,但失败了,在应用边框样式时,我总是感到头痛。 我的密码来了。请帮帮我 from PyQt5.QtWidgets import QWidget,QApplication,QTextEdit from PyQt5.QtCore import Qt from PyQt5 import QtWidgets import sys class SomeWidget(QWidget): def __init__(self, *args,

各位。我在pyqt5中有一个奇怪的问题。 我试图更改边框,但失败了,在应用边框样式时,我总是感到头痛。 我的密码来了。请帮帮我

from PyQt5.QtWidgets import QWidget,QApplication,QTextEdit
from PyQt5.QtCore import Qt
from PyQt5 import QtWidgets
import sys



class SomeWidget(QWidget):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.setStyleSheet('border:10px solid green')
        pass

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()
        # self.setStyleSheet(styles)
        pass

def test1():
    return 0,1

if __name__ == "__main__":

    app = QApplication(sys.argv)
    mw = mainWidget()
    mw.show()
    sys.exit(app.exec_())
    
    pass

这里的问题是QWidget类不支持border属性(请参阅和)

也就是说,将QWidget更改为QFrame可以实现以下目的:

导入系统 从PyQt5.QtCore导入Qt 从PyQt5.qtwidts导入QWidget、QApplication、QFrame 类SomeWidget(QFrame): 定义初始化(self,*args,**kwargs): super() self.setStyleSheet('边框:10px纯绿色') 类mainWidget(QWidget): 定义初始(自我,**kwargs): 超级() widget=SomeWidget(self) widget.setWindowFlags(Qt.FramelessWindowHint | Qt.Window) widget.resize(self.width()//2,self.height()//2) widget.show() 如果名称=“\uuuuu main\uuuuuuuu”: app=QApplication(sys.argv) mw=mainWidget() mw.show() sys.exit(app.exec_()) 试试看:

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_())