gpt4 book ai didi

python - 如何使用 Matplotlib GUI 而不是命令行提示来提示用户输入

转载 作者:太空宇宙 更新时间:2023-11-03 16:16:50 24 4
gpt4 key购买 nike

假设我编写一个函数get_coords,提示用户输入一些坐标。一种方法如下:

def get_coords():
coords_string = input("What are your coordinates? (x,y)")
coords = tuple(coords_string)
return coords

但是,我想通过 GUI 而不是命令行来使用它。我尝试过以下方法:

def onclick(event):
return (event.x, event.y)

def get_coords_from_figure():
fig = plt.figure()
plt.axvline(x=0.5) # Placeholder data
plt.show(block=False)
cid = fig.canvas.mpl_connect('button_press_event', onclick)

但是,使用 coords = get_coords_from_figure() 会导致 coords 变量为空,这与我使用 coords = get_coords() 不同,因为 input 函数等待用户输入。

如何使用 GUI 提示用户输入?

最佳答案

import matplotlib.pyplot as plt

def get_coords_from_figure():
ev = None
def onclick(event):
nonlocal ev
ev = event

fig, ax = plt.subplots()
ax.axvline(x=0.5) # Placeholder data
cid = fig.canvas.mpl_connect('button_press_event', onclick)

plt.show(block=True)
return (ev.xdata, ev.ydata) if ev is not None else None
# return (ev.x, ev.y) if ev is not None else None

您需要实际返回您的函数的某些内容(并在显示时阻止)。

如果您需要此函数返回,请定义一个类,其中包含 on_click 作为成员方法,该方法会改变对象状态,然后在您需要知道位置时查阅该对象。

关于python - 如何使用 Matplotlib GUI 而不是命令行提示来提示用户输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38877303/

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