糖醋咸鱼多放辣 2023-08-11 01:41 采纳率: 72.7%
浏览 9

请教下,如何控制Python的tkinter库的entry控件的宽度

img


如图,自己尝试写个简单小工具,可是entry_set_hour控件的左右两侧的空白部分宽度会跟随上一行控件entry_text的宽度变化而变化(2~16),如何让entry_set_hour控件像右侧的两个控件一样进行布局排版?

img


代码如下

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()

  • 写回答

2条回答 默认 最新

  • 糖醋咸鱼多放辣 2023-08-11 09:45
    关注

    img

    评论

报告相同问题?

问题事件

  • 创建了问题 8月11日

悬赏问题

  • ¥15 找一个QT页面+目标识别(行人检测)的开源项目
  • ¥15 有没有整苹果智能分拣线上图像数据
  • ¥20 有没有人会这个东西的
  • ¥15 cfx考虑调整“enforce system memory limit”参数的设置
  • ¥30 航迹分离,航迹增强,误差分析
  • ¥15 Chrome Manifest扩展引用Ajax-hook库拦截请求失败
  • ¥15 用Ros中的Topic通讯方式控制小乌龟的速度,走矩形;编写订阅器代码
  • ¥15 LLM accuracy检测
  • ¥15 pycharm添加远程解释器报错
  • ¥15 如何让子窗口鼠标滚动独立,不要传递消息给主窗口