[PYTHON] QWidget은 배경색을 그려 내지 않습니다.
PYTHONQWidget은 배경색을 그려 내지 않습니다.
Python 2.7에서 PySide 1.2.1을 사용하고 있는데 컬러 배경을 그리는 위젯이 필요합니다. Qt 디자이너에서는 레이블, 3 개의 다른 항목과 다른 레이블을 포함하는 위젯으로 구성된 간단한 창을 만들었습니다. 버튼, 라디오 버튼, 체크 박스가 포함 된 위젯의 경우 styleSheet 속성을 background-color로 설정합니다 : #FFFFFF. Qt Designer에서 모든 것이 원하는대로 렌더링됩니다 :
그러나 Pyside에서는 위젯이 배경색을 그리지는 않지만 위젯의 색상을 올바르게 상속합니다.
다음은 ui-XML입니다.
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>MainWindow</class>
<widget class="QMainWindow" name="MainWindow">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>276</width>
<height>133</height>
</rect>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<widget class="QWidget" name="centralwidget">
<layout class="QVBoxLayout" name="verticalLayout" stretch="0,1,1">
<item>
<widget class="QLabel" name="label">
<property name="text">
<string>The following should have white background:</string>
</property>
</widget>
</item>
<item>
<widget class="QWidget" name="widget" native="true">
<property name="styleSheet">
<string notr="true">background-color: #FFFFFF</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QPushButton" name="pushButton">
<property name="text">
<string>PushButton</string>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="radioButton">
<property name="text">
<string>RadioButton</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="checkBox">
<property name="text">
<string>CheckBox</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QLabel" name="label_2">
<property name="text">
<string>But it hasn't :-(</string>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QMenuBar" name="menubar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>276</width>
<height>18</height>
</rect>
</property>
</widget>
<widget class="QStatusBar" name="statusbar"/>
</widget>
<resources/>
<connections/>
</ui>
여기 파이썬 코드는 특별한 일을하지 않습니다.
import sys
from PySide import QtCore, QtGui
from generated.test import Ui_MainWindow
class MainWindow(Ui_MainWindow,QtCore.QObject):
def __init__(self, *args, **kwargs):
Ui_MainWindow.__init__(self, *args, **kwargs)
QtCore.QObject.__init__(self)
def setupUi(self, MainWindow):
Ui_MainWindow.setupUi(self, MainWindow)
def main(argv):
app = QtGui.QApplication(argv)
mainwindow = QtGui.QMainWindow()
ui = MainWindow()
ui.setupUi(mainwindow)
mainwindow.show()
sys.exit(app.exec_())
if __name__ == "__main__":
main(sys.argv)
이미 self.widget.setAutoFillBackground (True)를 시도했지만 문서에 따르면 배경에 유효한 styleSheet 값이있는 즉시이 속성을 사용할 수 없게됩니다.
이것은 잘 작동하지 않습니다 :
p = self.widget.palette()
p.setColor(self.widget.backgroundRole(), QtCore.Qt.white)
self.widget.setPalette(p)
(QWidget 배경색을 설정하는 방법에 대한 힌트를 얻었습니까?)
흰색 배경 색상을 그리는 위젯을 어떻게 얻을 수 있습니까?
해결법
-
==============================
1.컨테이너 위젯에 WA_StyledBackground 속성을 설정합니다.
컨테이너 위젯에 WA_StyledBackground 속성을 설정합니다.
ui = MainWindow() ui.setupUi(mainwindow) ui.widget.setAttribute(QtCore.Qt.WA_StyledBackground, True)
from https://stackoverflow.com/questions/23104051/qwidget-does-not-draw-background-color by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] chromedriver가있는 Selenium Python으로 전체 페이지의 스크린 샷 찍기 (0) | 2018.11.16 |
---|---|
[PYTHON] 파이썬에서 바이트를 비트로 변환 (0) | 2018.11.16 |
[PYTHON] 요청 파이썬 라이브러리에서 HTTP 요청의 다운로드 속도를 제한하는 방법은 무엇입니까? (0) | 2018.11.16 |
[PYTHON] 파이썬 : 유니 코드 문자열을 살균 하시겠습니까? [복제] (0) | 2018.11.16 |
[PYTHON] 파이썬에서 간단한 부울 논리를 동적으로 평가하기 (0) | 2018.11.16 |