Pyloid는 PySide6를 기반으로 만들어졌으며, 사용자가 직접 API를 확장할 수 있는 기능을 제공합니다. 이를 통해 PySide6의 다양한 기능을 Pyloid 애플리케이션에서 쉽게 사용할 수 있습니다.
from PySide6.QtWidgets import QFileDialog
from pyloid import PyloidAPI, Bridge
class CustomAPI(PyloidAPI):
@Bridge(result=str)
def open_file(self):
file, _ = QFileDialog.getOpenFileName(filter="Text files (*.txt)")
return file if file else ""
@Bridge(result=str)
def save_file(self):
file, _ = QFileDialog.getSaveFileName(filter="Text files (*.txt)")
return file if file else ""
@Bridge(result=str)
def select_directory(self):
directory = QFileDialog.getExistingDirectory()
return directory if directory else ""
from PySide6.QtWidgets import QMessageBox
from pyloid import PyloidAPI, Bridge
class MessageAPI(PyloidAPI):
@Bridge(str, str, result=str)
def show_info(self, title: str, message: str):
QMessageBox.information(None, title, message)
@Bridge(str, str,result=str)
def show_warning(self, title: str, message: str):
QMessageBox.warning(None, title, message)
@Bridge(str, str,result=bool)
def show_question(self, title: str, message: str):
reply = QMessageBox.question(None, title, message)
return reply == QMessageBox.Yes
from pyloid import Pyloid
app = Pyloid(app_name="CustomApp")
window = app.create_window(title="Custom API Example", js_apis=[CustomAPI(), MessageAPI()])
window.load_file("path/index.html")
window.show()
app.run()
<!DOCTYPE html>
<html>
<body>
<button id="openFile">파일 열기</button>
<button id="showMessage">메시지 표시</button>
<script>
document.addEventListener('pyloidReady', function () {
async function openFile() {
const filePath = await window.pyloid.CustomAPI.open_file();
console.log('선택된 파일:', filePath);
}
async function showMessage() {
await window.pyloid.MessageAPI.show_info(
'안내',
'커스텀 API 테스트입니다.'
);
}
document
.querySelector('#openFile')
.addEventListener('click', openFile);
document
.querySelector('#showMessage')
.addEventListener('click', showMessage);
});
</script>
</body>
</html>
QMainWindow 사용하여 원하는 기능 직접 구현
from PySide6.QtCore import Qt
from pyloid import Pyloid
app = Pyloid(app_name="Pyloid-App")
window = app.create_window("pyloid-window")
qmain = window.get_QMainWindow() # return QMainWindow instance
qmain.setWindowFlags(qmain.windowFlags() | Qt.WindowStaysOnTopHint) # window stays on top
이러한 방식으로 PySide6의 다양한 기능을 Pyloid 애플리케이션에 통합할 수 있습니다. QtSql
, QtBluetooth
, QtMultimedia
, QtNetwork
등 더 복잡한 기능도 필요에 따라 구현할 수 있습니다.