使用Python的Tkinter实现日期输入和设备选择预约功能
以下是用Python的tkinter实现该功能的示例代码:
import tkinter as tk
import requests
import json
class App(tk.Frame):
def __init__(self, master=None):
super().__init__(master)
self.master = master
self.pack()
self.create_widgets()
def create_widgets(self):
self.date_label = tk.Label(self, text='请选择日期:')
self.date_label.pack(side='left')
self.date_entry = tk.Entry(self)
self.date_entry.pack(side='left')
self.ok_button = tk.Button(self, text='确定', command=self.send_date)
self.ok_button.pack(side='left')
self.devname_label = tk.Label(self, text='可选设备:')
self.devname_label.pack()
self.devname_listbox = tk.Listbox(self, selectmode='extended')
self.devname_listbox.pack()
self.start_button = tk.Button(self, text='开始预约', command=self.start_resv)
self.start_button.pack()
def send_date(self):
date = self.date_entry.get()
resv_url = 'http://example.com/resv'
resv_data = {
'date': date
}
res = requests.post(resv_url, data=json.dumps(resv_data))
res_json = res.json()
devnames = [dev['devName'] for dev in res_json['data']]
for devname in devnames:
self.devname_listbox.insert('end', devname)
def start_resv(self):
selected_indices = self.devname_listbox.curselection()
selected_devnames = [self.devname_listbox.get(i) for i in selected_indices]
startresv_url = 'http://example.com/startresv'
startresv_data = {
'devnames': selected_devnames
}
res = requests.post(startresv_url, data=json.dumps(startresv_data))
# 处理 startresv() 函数的响应
root = tk.Tk()
root.title('预约系统')
App(root)
root.mainloop()
代码说明:
- 导入必要的库:
tkinter用于创建窗口界面,requests用于发送HTTP请求,json用于处理JSON数据。 - 创建应用程序类:
App类继承自tk.Frame,并定义了窗口的各个组件和功能。 - 创建窗口组件:
date_label:日期标签date_entry:日期输入框ok_button:确定按钮,点击后发送日期到resv()函数devname_label:设备名称标签devname_listbox:设备名称列表框,显示从resv()函数返回的设备名称start_button:开始预约按钮,点击后将选中的设备名称发送到startresv()函数
send_date函数:- 获取用户输入的日期。
- 发送日期到
resv_url,使用requests.post()发送POST请求。 - 解析返回的JSON数据,并将设备名称添加到
devname_listbox列表框中。
start_resv函数:- 获取用户选择的设备名称。
- 发送选择的设备名称到
startresv_url,使用requests.post()发送POST请求。
- 运行程序:
- 创建
tk.Tk()实例,设置窗口标题。 - 创建
App实例,并启动窗口事件循环root.mainloop()。
- 创建
请注意:
- 代码中
resv_url和startresv_url需要替换成实际的API地址。 startresv()函数需要根据实际情况编写代码处理预约操作。- 这只是一个示例代码,实际应用中可能需要根据具体需求进行修改。
原文地址: https://www.cveoy.top/t/topic/mSNo 著作权归作者所有。请勿转载和采集!