IC Python API:File Path
From Reallusion Wiki!
Revision as of 21:58, 17 June 2019 by Chuck (RL) (Talk | contribs) (Created page with "{{TOC}} {{Parent|IC_Python_API:RL_Python_Samples|RL Python Samples}} === Required Modules === Besides the rudimentary Reallusion Python API, we'll need to use Qtwidgets to b...")
- Main article: RL Python Samples.
Required Modules
Besides the rudimentary Reallusion Python API, we'll need to use Qtwidgets to build our user interface and shiboken2 to convert the dialog window to something Python can understand.
import RLPy
from PySide2 import QtWidgets
from PySide2.shiboken2 import wrapInstance
User Interface
We'll need to create a user interface with a line at the top that shows the directory location, a button for opening the file browse dialog, and a text input to display the contents of the file.
window = RLPy.RUi.CreateRDialog()
window.SetWindowTitle("Python Path & File")
dialog = wrapInstance(int(window.GetWindow()), QtWidgets.QDialog)
dialog.setFixedWidth(500)
layout = QtWidgets.QHBoxLayout()
dialog.layout().addLayout(layout)
pathText = QtWidgets.QPlainTextEdit(readOnly=True, maximumHeight=25)
contentText = QtWidgets.QPlainTextEdit(minimumHeight=250)
button = QtWidgets.QPushButton("....", minimumHeight=25, minimumWidth=25)
layout.addWidget(pathText)
layout.addWidget(button)
dialog.layout().addWidget(contentText)
File Dialog Request
Next we'll need a definition for the file dialog procedure to populate the directory field and the contents text field.
def open_file():
file_dialog = QtWidgets.QFileDialog()
file_dialog.setNameFilter("*.py")
file_dialog.exec()
if(len(file_dialog.selectedFiles()) > 0):
pathText.setPlainText(file_dialog.selectedFiles()[0])
f = open(file_dialog.selectedFiles()[0], "r")
contentText.setPlainText(f.read())
f.close()
button.clicked.connect(open_file)
window.Show()
Everything Put Together
import RLPy
from PySide2 import QtWidgets
from PySide2.shiboken2 import wrapInstance
window = RLPy.RUi.CreateRDialog()
window.SetWindowTitle("Python Path & File")
dialog = wrapInstance(int(window.GetWindow()), QtWidgets.QDialog)
dialog.setFixedWidth(500)
layout = QtWidgets.QHBoxLayout()
dialog.layout().addLayout(layout)
pathText = QtWidgets.QPlainTextEdit(readOnly=True, maximumHeight=25)
contentText = QtWidgets.QPlainTextEdit(minimumHeight=250)
button = QtWidgets.QPushButton("....", minimumHeight=25, minimumWidth=25)
layout.addWidget(pathText)
layout.addWidget(button)
dialog.layout().addWidget(contentText)
def open_file():
file_dialog = QtWidgets.QFileDialog()
file_dialog.setNameFilter("*.py")
file_dialog.exec()
if(len(file_dialog.selectedFiles()) > 0):
pathText.setPlainText(file_dialog.selectedFiles()[0])
f = open(file_dialog.selectedFiles()[0], "r")
contentText.setPlainText(f.read())
f.close()
button.clicked.connect(open_file)
window.Show()
APIs Used
You can research the following references for the APIs deployed in this code.