You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Matplotlib中Clicker组件的缩进异常问题求助

问题:PyQt6程序中Matplotlib Clicker组件无法正常工作

我自学Python/PyQt6/Qt Designer,在Visual Studio Code中开发了一款正RGB图像转真负片的程序。程序可绘制正输入与校正后负输出的曲线,用户能点击图表调整指定色调区域的明暗并生成新图。

主代码片段负责加载包含绘制用x输入、y输出列表的预设文件。原本用于记录点击的event_handler无法显示点击点,因此引入Clicker组件实现该功能。该组件在独立代码片段中运行正常,但插入主程序后失效:

  • 独立代码中,klicker被识别为(variable) klicker: clicker
  • 主程序中,klicker被提示“未被访问”
  • 若将klicker行的缩进回退一级,klicker识别恢复正常,但ax1又被提示“未被访问”

自行查阅资料未找到解决方案,恳请帮助。

主程序代码

class Guide_2(QMainWindow):
    def __init__(self):
        super().__init__()
        
        Preset, ok=QFileDialog.getOpenFileName()   
        fName = Preset
        with open(Preset,"rb") as loaded_file:
            Xgrid,Ygrid,ax,ay,Dnsty=pickle.load(loaded_file)

        Y0=Ygrid[0];Y1=Ygrid[1];Y2=Ygrid[2];Y3=Ygrid[3];Y4=Ygrid[4];Y5=Ygrid[5];Y6=Ygrid[6];Y7=Ygrid[7]
        Y8=Ygrid[8];Y9=Ygrid[9];Y10=Ygrid[10];Y11=Ygrid[11];Y12=Ygrid[12];Y13=Ygrid[13];Y14=Ygrid[14]
        Y15=Ygrid[15];Y16=Ygrid[16];Y17=Ygrid[17]
        Ygrid=[Y0,Y1,Y2,Y3,Y4,Y5,Y6,Y7,Y8,Y9,Y10,Y11,Y12,Y13,Y14,Y15,Y16,Y17]   

        P0=Xgrid[0];P1=Xgrid[1];P2=Xgrid[2];P3=Xgrid[3];P4=Xgrid[4];P5=Xgrid[5];P6=Xgrid[6];P7=Xgrid[7]
        P8=Xgrid[8];P9=Xgrid[9];P10=Xgrid[10];P11=Xgrid[11];P12=Xgrid[12];P13=Xgrid[13];P14=Xgrid[14]
        P15=Xgrid[15];P16=Xgrid[16];P17=Xgrid[17]
        Xgrid=[P0,P1,P2,P3,P4,P5,P6,P7,P8,P9,P10,P11,P12,P13,P14,P15,P16,P17] 
        
        fig = Figure(figsize=(6, 6), dpi=100)
        fig = plt.figure()
        ax1 = fig.add_subplot(111)
        ax1.set_ylabel('Log Neg RGB')
        ax1.set_xlabel('Log Positive RGB')
        ax1.set_title('Plot1')
        ax1.set_xlim(3.3,4.95)
        ax1.set_ylim(4.95,3.3)
        ax1.plot(Xgrid,Ygrid)
        klicker=clicker(ax1,['event'], markers=['x'])
        plt.show()

独立测试代码片段

# Stand alone snippet

fig = plt.figure()  
fig.subplots_adjust(top=0.8)
ax1 = fig.add_subplot(1,1,1)
ax1.set_ylabel('Neg RGB')
ax1.set_title('Plot1')

ax=[1,2,3,4,5]
ay=[1,2,3,4,5]
klicker=clicker(ax1,['event'], markers=['x'])
ax1.plot(ax,ay)
plt.show()

内容的提问来源于stack exchange,提问作者user27792357

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 08:09:55