2023. 7. 25. 12:54ㆍpython
PyQt6에서 폼 간 데이터 전송 방법은 PyQt5와 매우 유사합니다. 폼 간 데이터 전송을 위해 다음과 같은 방법들을 사용할 수 있습니다:
1. **시그널과 슬롯 (Signals and Slots):** 시그널과 슬롯 메커니즘은 PyQt의 핵심 기능 중 하나입니다. 한 폼에서 시그널을 발생시키고 다른 폼에서 해당 시그널에 슬롯을 연결하여 데이터를 전송할 수 있습니다.
예를 들어, 데이터를 전송하는 폼에서 다음과 같이 시그널을 정의하고, 받는 폼에서 해당 시그널에 슬롯을 연결할 수 있습니다:
```python
from PyQt6.QtWidgets import QApplication, QWidget, QPushButton
from PyQt6.QtCore import pyqtSignal
class SendingForm(QWidget):
data_sent = pyqtSignal(str)
def __init__(self):
super().__init__()
self.send_button = QPushButton('Send Data', self)
self.send_button.clicked.connect(self.send_data)
def send_data(self):
data = "Hello, this is data!"
self.data_sent.emit(data)
class ReceivingForm(QWidget):
def __init__(self):
super().__init__()
self.received_data = None
def receive_data(self, data):
self.received_data = data
# 처리할 작업 수행
# 애플리케이션 실행
app = QApplication([])
sender_form = SendingForm()
receiver_form = ReceivingForm()
sender_form.data_sent.connect(receiver_form.receive_data)
sender_form.show()
receiver_form.show()
app.exec()
```
2. **공유 모델 (Shared Model):** 데이터를 공유하는 모델을 만들고, 여러 폼에서 이 모델에 접근하여 데이터를 읽거나 쓸 수 있습니다. 일반적으로 데이터 클래스를 정의하여 이를 공유 모델로 사용합니다.
```python
from PyQt6.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayout, QLabel, QLineEdit
class DataModel:
def __init__(self):
self.data = ""
class SendingForm(QWidget):
def __init__(self, data_model):
super().__init__()
self.data_model = data_model
self.send_button = QPushButton('Send Data', self)
self.send_button.clicked.connect(self.send_data)
def send_data(self):
data = "Hello, this is data!"
self.data_model.data = data
class ReceivingForm(QWidget):
def __init__(self, data_model):
super().__init__()
self.data_model = data_model
self.label = QLabel("Received Data:", self)
self.data_display = QLineEdit(self)
self.data_display.setReadOnly(True)
def update_display(self):
self.data_display.setText(self.data_model.data)
# 애플리케이션 실행
app = QApplication([])
data_model = DataModel()
sender_form = SendingForm(data_model)
receiver_form = ReceivingForm(data_model)
sender_form.show()
receiver_form.show()
app.exec()
```
위 예시에서는 `DataModel` 클래스를 생성하여 `data`라는 데이터 속성을 관리합니다. `SendingForm`에서 데이터를 변경하고, `ReceivingForm`에서는 해당 데이터를 읽어서 화면에 표시합니다.
이러한 방법들을 사용하여 PyQt6에서 폼 간 데이터 전송을 쉽게 구현할 수 있습니다. 데이터의 복잡성과 상호 작용의 종류에 따라 적절한 방법을 선택하여 사용하시면 됩니다.
'python' 카테고리의 다른 글
python 상속에서 methed 정의만 사용 (0) | 2023.09.15 |
---|---|
파이썬에서 @setter 사용법 (0) | 2023.09.15 |
python UI tools (0) | 2023.07.25 |
pycryptodome 사용법 예제 (0) | 2023.07.20 |
파이썬에서 사용하는 암호와 복호화 에 대한 최신 기능 (0) | 2023.07.20 |