【发布时间】:2017-08-06 12:58:55
【问题描述】:
import tkinter as tk
from tkinter import ttk
def draw_mine_field(x=5, y=3):
mine_frame = tk.Toplevel(root)
mine_frame.grid()
root.withdraw()
for a in range(x):
for b in range(y):
ttk.Button(mine_frame, text='*', width=3 ).grid(column=a, row=b)
root = tk.Tk()
root.title("MS")
startframe = ttk.Frame(root)
ttk.Label(root,text="y").grid(row=1,column=1)
y_entry_box = ttk.Entry(root).grid(row=1,column=2)
ttk.Label(root,text="x").grid(row=1,column=3)
x_entry_box = ttk.Entry(root).grid(row=1,column=4)
ttk.Button(root,text="Start",command=draw_mine_field).grid(row=2,column=1)
ttk.Button(root,text="Quit",command=root.destroy).grid(row=2,column=2)
root.mainloop()
对于这个特定的示例,可能有一种更简单的方法。基本上,我想知道的是,当在command=draw_mine_field 中传递函数引用时,如何在不运行函数的情况下传递(x, y)?一般来说,这是如何工作的?
【问题讨论】:
-
如果不是默认值,x 和 y 是从哪里来的?
-
你不能在不运行的情况下将值传递给函数。在这个设计中你可以做的是设置一些全局变量并让函数使用这些变量而不是参数,但这并不完全是优雅的设计。通常在 GUI 中,您会将 x 和 y 值输入到输入小部件(文本框或旋转框)中并从中读取绘图函数。
标签: python function python-3.x tkinter