【问题标题】:Draw QFrame around QPushButton PyQt5在 QPushButton PyQt5 周围绘制 QFrame
【发布时间】:2018-04-27 22:24:02
【问题描述】:

我无法让 QFrame 像边框一样完全包围 QPushButton。它仅框住按钮的顶部和左侧。我想知道我在框架上做错了什么。

import sys

from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *

class main(QWidget):
    def __init__(self):
        super().__init__()
        layout1 = QVBoxLayout()
        btn1 = QPushButton("Test")

        frame = QFrame(btn1)
        frame.setGeometry(btn1.geometry())
        frame.setFrameShape(QFrame.Box)
        frame.setFrameShadow(QFrame.Plain)
        frame.setLineWidth(4)

        layout1.addWidget(btn1)
        self.setLayout(layout1)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = main()
    window.show()
    sys.exit(app.exec_())

【问题讨论】:

    标签: python python-3.x pyqt5 qpushbutton qframe


    【解决方案1】:

    问题是因为 QFrame 没有改变大小,而是 QPushButton 改变了。在我的解决方案中,每次在 QPushButton 中更改大小时,我都会调整大小

    class FrameButton(QPushButton):
        def __init__(self, *args, **kwargs):
            QPushButton.__init__(self, *args, **kwargs)
            self.frame = QFrame(self)
            self.frame.setFrameShape(QFrame.Box)
            self.frame.setFrameShadow(QFrame.Plain)
            self.frame.setLineWidth(4)
    
        def resizeEvent(self, event):
            self.frame.resize(self.size())
            QWidget.resizeEvent(self, event)
    
    
    class main(QWidget):
        def __init__(self):
            super().__init__()
            layout = QVBoxLayout(self)
            layout.addWidget(FrameButton("Test"))
    

    【讨论】:

      猜你喜欢
      • 2018-10-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-17
      相关资源
      最近更新 更多