使用wget库和tkinter库,定义一个方法,如何不直接运行方法?

使用wget库和tkinter库,定义一个方法,如何不直接运行方法?

我的诉求

在开发MineCraft简易开服器的时候,我需要定义一个方法,里面的代码可以执行一个安装的操作,然后按下tkinter库的按钮,才运行那个方法,并非先运行方法。

我的代码

# -*- coding: UTF-8 -*-

import tkinter as tk
import wget

root = tk.Tk()

def button_1_18_2():
    url = 'https://launcher.mojang.com/v1/objects/c8f83c5655308435b3dcf03c06d9fe8740a77469/server.jar'
    wget.download(url, out="1.18.2 Server.jar")

download_1_18_2 =tk.Button(padx=10,pady=10,command=button_1_18_2())

root.mainloop()

我应该解决什么?

我的问题是如何让代码中的“button_1_18_1()”方法不直接运行,点击按钮后再运行。

Jason990420
最佳答案

command 选项, 本意是在点击按钮时, 执行该函数.

button_1_18_2() 代表的不是函数, 而是该函数的返回结果, 在此例中, 等同设置 command=None.

其结果就是

  • 在定义该按钮时执行了该函数
  • 该按钮在点击后, 不作任何动作.

正确的写法是

download_1_18_2 =tk.Button(padx=10, pady=10, command=button_1_18_2)
1年前 评论
downloading (楼主) 1年前
讨论数量: 2
Jason990420

command 选项, 本意是在点击按钮时, 执行该函数.

button_1_18_2() 代表的不是函数, 而是该函数的返回结果, 在此例中, 等同设置 command=None.

其结果就是

  • 在定义该按钮时执行了该函数
  • 该按钮在点击后, 不作任何动作.

正确的写法是

download_1_18_2 =tk.Button(padx=10, pady=10, command=button_1_18_2)
1年前 评论
downloading (楼主) 1年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!