如图,自己尝试写个简单小工具,可是entry_set_hour控件的左右两侧的空白部分宽度会跟随上一行控件entry_text的宽度变化而变化(2~16),如何让entry_set_hour控件像右侧的两个控件一样进行布局排版?
代码如下
from re import fullmatch
from datetime import datetime
from pyperclip import copy
from pyautogui import hotkey
from schedule import every
from tkinter import Button, Entry, Frame, Label, messagebox, Tk
def schedule_task():
text = entry_text.get().replace(" ", "\t")
hour_str = entry_set_hour.get()
minute_str = entry_set_minute.get()
second_str = entry_set_second.get()
if not fullmatch(r'^[0-2]\d:[0-5]\d:[0-5]\d$', f"{hour_str}:{minute_str}:{second_str}"):
messagebox.showerror("时间格式错误!", "请重新输入:")
return
target_time = datetime.now().replace(
hour=int(hour_str),
minute=int(minute_str),
second=int(second_str),
microsecond=0
)
copy(text=text)
every().day.at(target_time.strftime("%H:%M:%S")).do(lambda: hotkey("ctrl", "v"))
def execute_task():
messagebox.showinfo("提示", "开始执行")
start_button.config(state="disabled")
schedule_task()
start_button.config(state="normal")
messagebox.showinfo("提示", "已完成")
win = Tk()
win.geometry("480x360")
win.title("定时粘贴")
frame = Frame(win)
frame.pack(padx=15, pady=15)
label_text = Label(frame, text="输入文本:", font=("SimSun", 18))
label_text.grid(row=0, column=0, padx=10, pady=10)
# entry_text = Entry(frame, font=("SimSun", 2))
entry_text = Entry(frame, font=("SimSun", 16))
entry_text.grid(row=0, column=1, padx=10, pady=10)
label_set_time = Label(frame, text="设定时间:", font=("SimSun", 18))
label_set_time.grid(row=1, column=0, padx=10, pady=20)
entry_set_hour = Entry(frame, font=("SimSun", 16), width=2)
entry_set_hour.grid(row=1, column=1, padx=2, pady=20)
label_set_hour = Label(frame, text="时", font=("SimSun", 12))
label_set_hour.grid(row=1, column=2, padx=0, pady=20)
entry_set_minute = Entry(frame, font=("SimSun", 16), width=2)
entry_set_minute.grid(row=1, column=3, padx=2, pady=20)
label_set_minute = Label(frame, text="分", font=("SimSun", 12))
label_set_minute.grid(row=1, column=4, padx=0, pady=20)
entry_set_second = Entry(frame, font=("SimSun", 16), width=2)
entry_set_second.grid(row=1, column=5, padx=2, pady=20)
label_set_second = Label(frame, text="秒", font=("SimSun", 12))
label_set_second.grid(row=1, column=6, padx=0, pady=20)
start_button = Button(frame, text="开始", font=("SimSun", 36), command=execute_task, state="normal")
start_button.grid(row=2, column=0, pady=10)
win.mainloop()