我正在尝试将几个python笔记本文件转换为python脚本,以便我可以创建一个python包... 我现在遇到的问题是在python笔记本中,有
f = urllib.urlopen(url_link)
fig = plt.figure(figsize=(3,3))
coords = coordinates(my_coord)[1]
image = plt.imread(f)
plt.imshow(image)
collector = {'x':0,'y':0}
def onclick(event):
collector['x'] = event.x
collector['y'] = event.y
cid = fig.canvas.mpl_connect('button_press_event',onclick)
print(collector)
魔术按钮,使用户可以点击绘图并接收他/她刚刚点击的绘图的坐标。实现它的方法如下:
%matplotlib notebook
现在我想在python脚本中创建相同的函数。但是在脚本中
CREATE PROCEDURE UpdateSQL
-- Add the parameters for the stored procedure here
@UpdateField varchar(25),
@UpdateValue varchar(25),
@FilterField varchar(25),
@FilterValue varchar(25),
@DBNAME sysname
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
DECLARE @sql NVARCHAR(MAX);
SET @sql = '
UPDATE @DBNAME SET @UpdateField = @UpdateValue WHERE @FilterField = @FilterValue
';
SET @sql = REPLACE(@sql, '@DBNAME', @DBNAME);
SET @sql = REPLACE(@sql, '@UpdateField', @UpdateField);
SET @sql = REPLACE(@sql, '@FilterField', @FilterField);
exec sp_executesql @sql,
N'@UpdateField varchar(25), @FilterField varchar(25)',
@UpdateField=@UpdateField, @FilterField=@FilterField;
END;
无效。有没有其他方法可以让我的python脚本做同样的事情:显示情节,用户可以点击并返回用户点击的坐标?
提前谢谢!答案 0 :(得分:0)
原则上不需要这样的事件处理,因为它在matplotlib绘图窗口中自动可用。
以下脚本
import matplotlib.pyplot as plt
image = plt.imread("image.jpg")
fig, ax = plt.subplots(figsize=(4,3))
ax.imshow(image)
plt.show()
生成此窗口
显示下方状态栏内当前鼠标位置的坐标。
但是当然可以通过使用相同的事件处理机制来扩展功能
import matplotlib.pyplot as plt
image = plt.imread("image.jpg")
fig, ax = plt.subplots(figsize=(4,3))
ax.imshow(image)
collector = {'x':0,'y':0}
def onclick(event):
collector['x'] = event.x
collector['y'] = event.y
print(collector)
cid = fig.canvas.mpl_connect('button_press_event',onclick)
plt.show()
请注意,这将打印图形坐标,而不是数据坐标。由于在大多数情况下图形坐标非常无用,因此最好使用数据坐标,如下所示。
collector['x'] = event.xdata
collector['y'] = event.ydata
另请参阅matplotlib页面上的event handling article。