如何将我的 Tkinter UI 项目显示到浏览器选项卡中?我想分享我手机的链接以将其添加到我的主屏幕

问题描述 投票:0回答:1

所以,我会保持简短。

我正在创建自己的 Tkinter 应用程序,它可以让我创建一项杂务,我可以添加一个时间和日期,它会提醒我,并且在时间到达时它会发送推送通知。我试图将其转换为移动应用程序,但我完全是个傻瓜,所以我放弃了。然后我问我的表弟,他正在建立一个网站,他通过 Safari 将其作为移动应用程序下载到手机上。所以我想我也可以做同样的事情。但后来我意识到我需要一个链接。然后我意识到我不知道如何建立链接。所以我心想,“嘿,你为什么不尝试将 tkinter 项目插入到浏览器中?”就像我说的,我是个傻瓜,所以我不必再说了。

您可以在下面查看我的代码示例。

import tkinter as tk from tkinter import messagebox from datetime import datetime, timedelta import threading from plyer import notification import webview # Function to send notifications def send_notification(chore): notification.notify( title="Alright, chore time!", message=f"Your chore, {chore}'s timer has ended.", timeout=10 ) # Function to add a new chore def add_chore(): chore = chore_entry.get() due_time = time_entry.get() if not chore or not due_time: messagebox.showwarning("Yikes!", "Please enter both chore and time") return try: due_time_obj = datetime.strptime(due_time, "%Y-%m-%d %H:%M") chores_list.insert(tk.END, f"{chore} - {due_time}") chores[due_time_obj] = chore chore_entry.delete(0, tk.END) time_entry.delete(0, tk.END) except ValueError: messagebox.showwarning("Uh Oh...", "Please enter the time in the format YYYY-MM-DD HH:MM") # Function to check and send due notifications def check_notifications(): now = datetime.now() for due_time in list(chores.keys()): if now >= due_time: send_notification(chores[due_time]) del chores[due_time] update_chore_list() root.after(60000, check_notifications) # Check every minute # Function to update the listbox def update_chore_list(): chores_list.delete(0, tk.END) for due_time, chore in chores.items(): chores_list.insert(tk.END, f"{chore} - {due_time.strftime('%Y-%m-%d %H:%M')}") # GUI setup root = tk.Tk() root.title("Chore Manager") chores = {} chore_label = tk.Label(root, text="Chore:") chore_label.grid(row=0, column=0, padx=10, pady=10) chore_entry = tk.Entry(root) chore_entry.grid(row=0, column=1, padx=10, pady=10) time_label = tk.Label(root, text="Due Time (YYYY-MM-DD HH:MM):") time_label.grid(row=1, column=0, padx=10, pady=10) time_entry = tk.Entry(root) time_entry.grid(row=1, column=1, padx=10, pady=10) add_button = tk.Button(root, text="Add Chore", command=add_chore) add_button.grid(row=2, column=0, columnspan=2, padx=10, pady=10) chores_list = tk.Listbox(root, width=50) chores_list.grid(row=3, column=0, columnspan=2, padx=10, pady=10) webview.create_window("Ello", "https://pywebview.flowrl.com/hello") webview.start() # Start checking for notifications check_notifications() root.mainloop()
这就是我的代码,所以你可以采样 n 个东西来看看要做什么。谢谢。

我在谷歌上搜索了一些东西,但没有成功。

python tkinter
1个回答
0
投票
如果您有远程专用服务器或共享服务器,这是可能的。您可以从 bluehost、godaddy 等托管公司购买, 我假设你有一个专用的 ubuntu 服务器

1.访问服务器: 使用 SSH 访问您的服务器。您可以从终端或 SSH 客户端(例如 PuTTY)执行此操作。 更新升级,安装桌面环境

ssh username@server_ip_address sudo apt update && sudo apt upgrade -y sudo apt install ubuntu-desktop -y
2.安装VNC Server,启动vnc服务器进行配置:

sudo apt install tightvncserver -y vncserver
设置密码后,停止VNC服务器

vncserver -kill :1
为 VNC 创建新的启动脚本

nano ~/.vnc/xstartup
将以下行添加到文件中

#!/bin/bash xrdb $HOME/.Xresources startxfce4 &
使脚本可执行:

chmod +x ~/.vnc/xstartup
启动VNC服务器

vncserver :1

3.现在你应该安装 python、tkinter 等。创建你的 python 脚本(程序)并保存它。 通过在路径 .desktop

 中创建 
/usr/share/applications/
 文件,您可以创建桌面图标。该过程必须在堆栈溢出中可用

4.安装和配置基于 Web 的 VNC 客户端

安装 WebSockify 和 NoVNC

sudo apt install websockify novnc -y
启动 WebSockify 和 NoVNC。此命令使用 NoVNC 将在端口 5901 上运行的 VNC 服务器代理到端口 6080。

websockify --web=/usr/share/novnc/ 6080 localhost:5901
4.在浏览器中打开应用程序

打开浏览器并在地址栏中输入您的 IP 地址和端口号

http://server_ip_address:6080/vnc.html
现在运行您的应用程序

© www.soinside.com 2019 - 2024. All rights reserved.