Pynecone 正在参加 2021 年度 OSC 中国开源项目评选,请投票支持!
Pynecone 在 2021 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
2021 年度 OSC 中国开源项目评选 正在火热进行中,快来投票支持你喜欢的开源项目!
2021 年度 OSC 中国开源项目评选 >>> 中场回顾
Pynecone 获得 2021 年度 OSC 中国开源项目评选「最佳人气项目」 !
授权协议 Apache 2.0
开发语言 Python
操作系统 跨平台
软件类型 开源软件
所属分类 Web应用开发Web框架
开源组织
地区 不详
投 递 者 罗奇奇
适用人群 未知
收录时间 2023-03-15

软件简介

Pynecone 是一个全栈 Python 框架,可以使用纯 Python 构建高性能、可自定义的 Web 应用程序。

Pynecone 应用程序示例

下面是一个围绕 DALL·E 创建 UI 的示例,这个示例调用了 OpenAI 的 DALL·E API,但您可以在本地将其替换为任何 ML 模型。

下面是创建它的完整代码,这一切都在一个 Python 文件中完成!

import pynecone as pc
import openai

openai.api_key = "YOUR_API_KEY"

class State(pc.State):
    """The app state."""
    prompt = ""
    image_url = ""
    image_processing = False
    image_made = False

    def process_image(self):
        """Set the image processing flag to true and indicate image is not made yet."""
        self.image_processing = True
        self.image_made = False        

    def get_image(self):
        """Get the image from the prompt."""
        response = openai.Image.create(prompt=self.prompt, n=1, size="1024x1024")
        self.image_url = response["data"][0]["url"]
        self.image_processing = False
        self.image_made = True

def index():
    return pc.center(
        pc.vstack(
            pc.heading("DALL·E", font_size="1.5em"),
            pc.input(placeholder="Enter a prompt..", on_blur=State.set_prompt),
            pc.button(
                "Generate Image",
                on_click=[State.process_image, State.get_image],
                width="100%",
            ),
            pc.divider(),
            pc.cond(
                State.image_processing,
                pc.circular_progress(is_indeterminate=True),
                pc.cond(
                     State.image_made,
                     pc.image(
                         src=State.image_url,
                         height="25em",
                         width="25em",
                    )
                )
            ),
            bg="white",
            padding="2em",
            shadow="lg",
            border_radius="lg",
        ),
        width="100%",
        height="100vh",
        bg="radial-gradient(circle at 22% 11%,rgba(62, 180, 137,.20),hsla(0,0%,100%,0) 19%)",
    )

# Add state and page to the app.
app = pc.App(state=State)
app.add_page(index, title="Pynecone:DALL·E")
app.compile()

Pynecone 中的 UI

从用户界面开始。

def index():
    return pc.center(
        ...
    )

index函数定义应用程序的前端。可使用不同的组件,例如centervstackinputbutton来构建前端。组件可以相互嵌套以创建复杂的布局。您可以使用关键字参数来使用 CSS 的全部功能来设置它们的样式。

Pynecone 附带60 多个内置组件

状态

class State(pc.State):
    """The app state."""
    prompt = ""
    image_url = ""
    image_processing = False
    image_made = False

状态定义了应用程序中可以更改的所有变量(称为 vars)以及更改它们的函数。这里的状态由prompt和组成image_url。还有布尔值image_processingimage_made指示何时显示循环进度和图像。

事件处理器

    def process_image(self):
        """Set the image processing flag to true and indicate image is not made yet."""
        self.image_processing = True
        self.image_made = False        

    def get_image(self):
        """Get the image from the prompt."""
        response = openai.Image.create(prompt=self.prompt, n=1, size="1024x1024")
        self.image_url = response["data"][0]["url"]
        self.image_processing = False
        self.image_made = True

在状态中定义了称为事件处理程序的函数来更改状态变量。事件处理程序是在 Pynecone 中修改状态的方式。可以调用它们以响应用户操作,例如单击按钮或在文本框中键入,这些动作称为事件。

我们的DALL·E。应用程序有两个事件处理程序,process_image用于指示正​​在生成图像和get_image调用 OpenAI API。

路由

最后定义应用程序并告诉它使用什么状态。

app = pc.App(state=State)

添加一条从应用程序根目录到索引组件的路由,还添加了一个标题,该标题将显示在页面预览/浏览器选项卡中。

app.add_page(index, title="Pynecone:DALL-E")
app.compile()

安装

Pynecone 需要以下内容才能开始:

$ pip install pynecone

创建您的第一个 Pynecone 应用程序

安装 Pynecone 也会安装pc命令行工具,可通过创建一个新项目来测试安装是否成功。

将 my_app_name 替换为自己的项目名称:

$ mkdir my_app_name
$ cd my_app_name
$ pc init

第一次运行此命令时,会自动下载并安装bun 

此命令会在您的新目录中初始化模板应用程序,可以在开发模式下运行此应用程序:

$ pc run

应用程序将在 http://localhost:3000 上运行。现在可以修改my_app_name/my_app_name.py

Pynecone 具有快速刷新功能,可以在保存代码时立即看到更改。

展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论

点击加入讨论🔥(2) 发布并加入讨论🔥
暂无内容
发表了博客
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
发表了问答
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
暂无内容
2 评论
31 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部