You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Tkinter按钮未点击却自动执行关联函数的问题排查

问题分析与解决方案

问题根源

你遇到的问题是因为创建新窗口按钮时,直接使用了command=btnrepress(sb)的写法——这种写法会立即执行btnrepress(sb)函数,而非将其绑定为按钮的点击回调。括号()会触发函数的即时调用,而不是传递函数对象供后续点击时触发。

解决方案

使用lambda表达式包装带参数的函数调用,确保只有按钮被点击时才执行目标函数。同时,Toplevel窗口无需单独调用mainloop(),主窗口的window.mainloop()已能管理所有子窗口的事件循环。

修改两处关键代码:

  1. 替换按钮的command参数:
# 原代码
nwbtn = Button(nw, text="실행", width=30, command=btnrepress(sb))
# 修改为
nwbtn = Button(nw, text="실행", width=30, command=lambda: btnrepress(sb))
  1. 删除Toplevel中的nw.mainloop()语句。

修改后的完整代码

from tkinter import *
import os

window = Tk()
window.geometry("600x400")
window.title("타이머")
window.resizable(False, False)

hb = 0
mb = 0
sb = 0

hbc = 0
mbc = 0
sbc = 0


def btnrepress(x):
    # os.system(f"shutdown -s -t {x}")
    os.system("ver")
    

def btnpress():
    global hb, mb, sb, hbc, mbc, sbc
    hb = ht.get()
    mb = mt.get()
    sb = st.get()
    hbc = int(hb)
    mbc = int(mb)
    sbc = int(sb)
    
    sb = sbc + hbc*3600 + mbc*60
    
    nw = Toplevel()
    nw.geometry("200x100")
    nw.title("재확인")
    nw.resizable(False,False)

    nwl = Label(nw)
    nwl.config(text=str(hbc) + "시간" + str(mbc) + "분" + str(sbc) + "초")
    nwl.pack()

    nwbtn = Button(nw, text="실행", width=30, command=lambda: btnrepress(sb))
    nwbtn.pack()


ts = Label(window)
ts.config(text="시간: ")
ts.place(x=130,y=80)

ts2 = Label(window)
ts2.config(text="분: ")
ts2.place(x=240,y=80)

ts3 = Label(window)
ts3.config(text="초: ")
ts3.place(x=340,y=80)

tl = Label(window)
tl.config(text="")
tl.place(x=220,y=10)

ht = Entry(window)
ht.insert(0, "0")
ht.config(width=8)
ht.place(x=170,y=80)

mt = Entry(window)
mt.insert(0, "0")
mt.config(width=8)
mt.place(x=270,y=80)

st = Entry(window)
st.insert(0, "0")
st.config(width=8)
st.place(x=370,y=80)

btn = Button(window)
btn.config(text = "실행예약")
btn.config(width=30)
btn.config(command=btnpress)
btn.place(x=190,y=100)


window.mainloop()

补充:添加了global声明,确保btnpress函数能正确修改全局变量(若后续需要复用这些变量)。

内容的提问来源于stack exchange,提问作者lsm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 14:35:16