Spaces:
Runtime error
Runtime error
| import gradio as gr | |
| from gradio.routes import Request | |
| from typing import Any | |
| from AppPub.User.Bean.UserInfo import UserInfo | |
| """ | |
| justify:控制组件在水平方向上的对齐方式。可选值包括: | |
| 'flex-start':默认值,左对齐。 | |
| 'center':居中对齐。 | |
| 'flex-end':右对齐。 | |
| 'space-between':均匀分布,首尾贴边。 | |
| 'space-around':均匀分布,组件两侧留有空白。 | |
| """ | |
| # 使用HTML元素创建一个自定义的空白区域,使用flex-grow来填充剩余空间 | |
| def blank_space(): | |
| return "<div style='flex-grow: 1;'></div>" | |
| class LoginPanel: | |
| def __init__(self): | |
| with gr.Row() as row: | |
| self.loginButton = self.GetLoginButton() | |
| gr.HTML(blank_space()) | |
| self.logoutButton = self.GetLogOutButton() | |
| self.row = row | |
| # 登錄用戶唯一標識碼 | |
| self.sub = 0 | |
| self.userInfo = None | |
| def GetLoginButton(self): | |
| loginbutton = gr.LoginButton(scale=1, size=None) | |
| def _check_login_status(request: Request) -> dict[str, Any]: | |
| # Each time the page is refreshed or loaded, check if the user is logged in and adapt label | |
| session = getattr(request, "session", None) or getattr( | |
| request.request, "session", None | |
| ) | |
| if session is None or "oauth_profile" not in session: | |
| self.sub = 0 | |
| return loginbutton.update("登錄 Hugging Face", interactive=True) | |
| else: | |
| username = session["oauth_profile"]["preferred_username"] | |
| self.sub = session["oauth_token"]["userinfo"]["sub"] | |
| picurl = session["oauth_token"]["userinfo"]["picture"] | |
| self.userInfo = UserInfo(self.sub,username , picurl) | |
| return loginbutton.update(f"你好: {username}", interactive=False) | |
| loginbutton.attach_load_event(_check_login_status, None) | |
| return loginbutton | |
| def GetLogOutButton(self): | |
| logoutButton = gr.LogoutButton(value="退出登錄", scale=1, size=None) | |
| return logoutButton | |