파일의 부울을로드하는 데 문제가 있습니다. PyQt5
app에 있습니다.ini 파일에서 부울을 읽을 수 없습니다.
#!/usr/bin/python3
# -*- coding: utf-8 -*-
import sys
from PyQt5 import QtCore
from PyQt5.QtCore import QSettings, QVariant
from PyQt5.QtWidgets import (
QApplication, QCheckBox, QDialog, QGridLayout,
QLabel, QLayout, QPushButton
)
class Settings(QDialog):
"settings GUI"
_settings = None
def __init__(self):
super(Settings, self).__init__()
self._ui()
def _ui(self):
self._chk_test = QCheckBox()
self._chk_test.setText("test checkbox")
self._settings = QSettings("settings.ini", QSettings.IniFormat)
self._settings.setFallbacksEnabled(False)
# load configuration
self._chk_test.setChecked(
self._bool(self._settings.value("test_value", True)))
# save settings
btn_save = QPushButton("save")
btn_save.clicked.connect(self._save_settings)
# setting layouts
grid_layout = QGridLayout()
grid_layout.addWidget(self._chk_test, 0, 0, 1, 1)
grid_layout.addWidget(btn_save, 0, 1, 1, 1)
grid_layout.setSizeConstraint(QLayout.SetFixedSize)
grid_layout.setHorizontalSpacing(100)
grid_layout.setVerticalSpacing(5)
self.setWindowTitle("Boolean")
self.setLayout(grid_layout)
self.show()
def _save_settings(self):
self._settings.setValue("test_value", self._chk_test.isChecked())
self.close()
def _bool(self, str):
if str == "true":
return True
else:
return False
if __name__ == "__main__":
app = QApplication(sys.argv)
ui = Settings()
sys.exit(app.exec_())
내가 AttributeError 얻고
self._settings.value("test_value", True).toBool()
또는
QVariant(self._settings.value("test_value", True)).toBool()
를 사용하여 부울을로드하려고 해요 때 : 나는 정의 _bool
를 작성했습니다
'str'/'QVariant' object has no attribute 'toBool()'.
을 방법 그러나 나는 이상하게 여긴다. 그것을 해결하는 더 좋은 방법이 있다면 보내십시오. self._settings.value("test_value", True)
가정
짧은 :' "STR == 반환 true "' – furas
좋은 트릭, 고마워! Qt 워드 프로세서에서 볼 수는 없지만, [PyQt doc] (http://pyqt.sourceforge.net/Docs/PyQt4/qsettings.html#value)에서 찾을 수 있습니다. – SyedElec