Spaces:
Running
Running
import gradio as gr | |
import os | |
import subprocess | |
import zipfile | |
from pathlib import Path | |
def process_figma(figma_url, figma_token): | |
if not Path("Tkinter-Designer").exists(): | |
subprocess.run(["git", "clone", "https://github.com/ParthJadhav/Tkinter-Designer.git"], check=True) | |
print("Cloning to the github repo") | |
os.chdir("Tkinter-Designer") | |
conversion_command = [ | |
"python", | |
"-m", | |
"tkdesigner.cli", | |
figma_url, | |
figma_token | |
] | |
subprocess.run(conversion_command, check=True) | |
zip_file_path = "output.zip" | |
with zipfile.ZipFile(zip_file_path, 'w') as zip_file: | |
for foldername, subfolders, filenames in os.walk("build"): | |
for filename in filenames: | |
filepath = os.path.join(foldername, filename) | |
zip_file.write(filepath, os.path.relpath(filepath, "build")) | |
return zip_file_path | |
with gr.Blocks() as demo: | |
gr.Markdown("## Figma to Tkinter Converter") # Title | |
with gr.Row(): | |
url_input = gr.Textbox(label="Figma URL") | |
token_input = gr.Textbox(label="Figma Token") | |
submit_button = gr.Button("Convert") | |
output_file = gr.File(label="Download Output") | |
submit_button.click(fn=process_figma, inputs=[url_input, token_input], outputs=output_file) | |
description = gr.Markdown( | |
""" | |
Upload your Figma design by providing the URL and token. | |
<br> | |
### Naming is Important | |
| Figma Element Name | Tkinter Element | | |
| --- | --- | | |
| Button | Button | | |
| Line | Line | | |
| Text | Name it anything | | |
| Rectangle | Rectangle | | |
| TextArea | Text Area | | |
| TextBox | Entry | | |
| Image | Canvas.Image() | | |
| ButtonHover (EXPERIMENTAL) | Button shown on hover | | |
<br> | |
**NOTE** : This project is created by : ParthJadhav | |
Checkout this repo to know more : [GitHub Repo](https://github.com/ParthJadhav/Tkinter-Designer) | |
""" | |
) | |
description.render() | |
demo.launch() |