gpt4 book ai didi

python - Tkinter 按钮命令在运行程序时激活?

转载 作者:IT老高 更新时间:2023-10-28 21:16:06 24 4
gpt4 key购买 nike

我正在尝试制作一个构建检索表单,但按钮似乎有问题...我是 Python/tkinter GUI 编程(以及一般的 GUI 编程)的新手,并借用了 Hello 的骨架World 应用程序,并以此为基础。

在下面的代码中,我设置了浏览按钮的“命令”选项,以便在单击时调用类的内部 get_dir() 函数。但是,一旦我尝试运行该应用程序,就会调用 get_dir() 函数并提示我选择一个目录。任何想法为什么会发生这种情况,以及我可以做些什么来使其正常运行?

from Tkinter import *
import tkFont
from tkFileDialog import askdirectory

class App:

def __init__(self, master):

fontHead = tkFont.Font(family="Arial", size=10, weight=tkFont.BOLD)
fontBold = tkFont.Font(family="Arial", size=8, weight=tkFont.BOLD)
fontReg = tkFont.Font(family="Arial", size=8)

frameN = Frame(master)
frameN.grid(row=0,padx=5,pady=5)

frameXBH = Frame(frameN)
frameXBH.grid(row=0,columnspan=5,padx=5)

Canvas(frameXBH,borderwidth=0,relief="flat",height=1,width=20,background="#cccccc").grid(row=0)
Label(frameXBH, text="Xbox 360",font=fontBold,width=9).grid(row=0,column=1)
Canvas(frameXBH,borderwidth=0,relief="flat",height=1,width=440,background="#cccccc").grid(row=0,column=2,sticky="WE")

Label(frameN, text="Destination Path:",font=fontReg).grid(row=1,sticky="W")
xbPath = Entry(frameN,width=30,font=fontReg)
xbPath.grid(row=1,column=1,sticky="W")
xbBrowse = Button(frameN,text="Browse...",font=fontReg,command=self.get_dir(xbPath))
xbBrowse.grid(row=1,column=2,sticky="W")
xbRel = Checkbutton(frameN,text="Release",font=fontReg)
xbRel.grid(row=1,column=3,sticky="W")
xbShip = Checkbutton(frameN,text="Ship",font=fontReg)
xbShip.grid(row=1,column=4,sticky="W")

Canvas(frameN,borderwidth=1,relief="groove",width=550,height=0).grid(row=2,columnspan=5,pady=10)

# SAVE AND CANCEL

btnSave = Button(frameN,text="Save",width=10)
btnSave.grid(row=3,column=3,sticky="E")

btnCancel = Button(frameN,text="Cancel",width=10)
btnCancel.grid(row=3,column=4,sticky="W")

def get_dir(self,box):
tmp = askdirectory(mustexist=1,title="Please select a destination")
tmp = tmp.replace("/","\\")
box.delete(0,END)
box.insert(0,tmp)

root = Tk()
root.resizable(0,0)

app = App(root)

root.mainloop()

最佳答案

使您的事件处理程序成为一个 lambda 函数,它使用您想要的任何参数调用您的 get_dir():

xbBrowse = Button(frameN, text="Browse...", font=fontReg, command=lambda : self.get_dir(xbPath))

关于python - Tkinter 按钮命令在运行程序时激活?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3704568/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com