所以,我会保持简短。
我正在创建自己的 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 个东西来看看要做什么。谢谢。我在谷歌上搜索了一些东西,但没有成功。
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
现在运行您的应用程序