저는 Python으로 코딩하는 더 좋은 방법을 찾으려고합니다. (단 몇주 만 코딩했습니다.)(QDialog) 변수를 저장할 때 다른 변수를 닫을 때도 마찬가지입니다 (Parenting ??)
요약 : 닫는 대화 상자 (다른 클래스에서 호출 됨)에 입력 된 변수 값을 유지하고 (액세스하는) 더 나은 방법을 찾는 것. 두 클래스에서이 값을 사용할 수 있어야합니다.
QtDesigner를 사용하여 주 윈도우와 대화 상자를 만들었습니다. 메인 윈도우에서 "설정"메뉴를 클릭하면 "MyDialog"가 열립니다. 거기에 변경할 수있는 몇 가지 설정이 있습니다. 내 설정을 저장하기 위해 대화 상자에 "저장"버튼이 있습니다. 다음은 예시적인 코드 :
이 클래스 (MainForm 중 하나 또는 대화 상자를 다시 재 입력하여 폐쇄 된 후에 I 대화 상자에 입력 된 값에 액세스 할 수 있어야up = down = left = right = 0
class MainForm(QMainWindow):
def __init__(self, parent=None):
super(MainForm, self).__init__(parent)
self.ui = Ui_MainForm()
self.ui.setupUi(self)
self.ui.actionSettings.triggered.connect(self.open_my_dialog)
def open_my_dialog(self):
my_dialog = MyDialog()
my_dialog.exec_()
class MyDialog(QDialog):
def __init__(self, parent=None):
super(MyDialog, self).__init__(parent)
self.ui = Ui_MyDialog()
self.ui.setupUi(self)
self.ui.pushButton_save.clicked.connect(self.save_dialog)
self.ui.spinBox_up.setValue(up)
self.ui.spinBox_down.setValue(down)
self.ui.spinBox_left.setValue(left)
self.ui.spinBox_right.setValue(right)
def save_dialog(self):
global up, down, left, right
up = self.ui.spinBox_up.value()
down = self.ui.spinBox_down.value()
left = self.ui.spinBox_left.value()
right = self.ui.spinBox_right.value()
self.close()
;을 MyForm () 및 MyDialog()). 보시다시피 캐시에서 설정을 유지하는 방법은 전역 변수에 할당하는 것입니다. 나는 이것이 이것을하는 적절한 방법이 아니라는 것을 안다. 하지만 "저장"버튼을 클릭하면 설정을 저장해야하므로 대화 상자를 다시 열면 마지막으로 왼쪽에있는 설정 (저장을 클릭했을 때)이 표시됩니다. 또한 내 MainForm() 클래스에서 이러한 동일한 값을 사용해야합니다. 다른 클래스에서 클래스 및 메서드 변수를 호출하는 것과 관련하여 많은 내용을 읽었습니다. 또한 육아 (이 하나는 나를 조금 혼란스럽게했다). 그러나 예제는 매우 단순했습니다. 나는 그들이 당신에게주는 것과 같이 처음부터 수업을 작성하면 이해합니다. 하지만 Ui 용 디자이너를 사용하고 있기 때문에 (예 : 초기화은 다른 예제 코드와는 다른 방식으로) 다른 코드 (self.ui.xxx (xxselfxx)를 많이 사용합니다.)를 시도해 보았습니다. 대답을 많이 검색된하지만 포기하고 글로벌 변수를 해결했다.
을 어떤 하나 친절하게이 사건을 해결하는 적절한 (파이썬) 방법은 내가 매우 greatful 될 것입니다 어떻게해야 나에게 설명한다면.
감사합니다.
내가 클래스 변수를 사용하여 해결책을 발견! 지금은 매우 늦었습니다. 그러나 잘하면 내일 대답을 게시 할 것입니다. –