【问题标题】:Cosinus drawing余弦绘图
【发布时间】:2013-11-17 20:13:46
【问题描述】:

我想做一个在有序范围内绘制余弦图的程序。但是有一个我无法修复的错误。错误消息:“z = int(self.entry.get()) AttributeError: program instance has no attribute 'entry" 这是我的代码:

 # -*- coding: utf-8 -*-

from Tkinter import Tk, W, E
from ttk import Label, Button, Frame, Entry,Style
import math
import sys
import matplotlib as mp

class program(Frame):

    def __init__(self,main):

        Frame.__init__(self,main)        
        self.main = main       
        self.initUI()

    def initUI(self):

        self.main.title('COSINUSEK')
        Style().configure('TFrame', background = 'black')
        Style().configure('TLabel', background = 'black', foreground = 'blue')
        Style().configure("TButton", background = 'red', foreground = 'blue')


        self.rowconfigure(0, pad = 3)
        self.rowconfigure(1, pad = 3)
        self.rowconfigure(2, pad = 3)
        self.rowconfigure(3, pad = 3)
        self.rowconfigure(4, pad = 3)

        self.columnconfigure(0,pad =3)
        self.columnconfigure(1,pad =3)
        self.columnconfigure(2,pad =3)
        self.columnconfigure(3,pad =3)
        self.columnconfigure(4,pad =3)



        label = Label(self, text = 'Podaj zakres w stopniach').grid(row = 0,column = 3)
        od = Label(self, text = '     OD').grid(row = 1, column =0)
        do = Label(self, text = '             DO').grid(row = 1, column =4 )
        entry = Entry(self, justify = 'center').grid(row = 2,column = 0,columnspan = 2 ,sticky = E+ W)
        entry1 = Entry(self, justify = 'center').grid(row = 2,column = 4,columnspan = 2, sticky = E)
        button =  Button(self, text = 'Ok',command = self.ok).grid(row = 3,column = 3)
        button1 = Button(self, text = 'Draw', command = self.dra).grid(row = 4, column = 3)

        self.pack()

    def run(self):
        self.main.mainloop()

    def ok(self):
        x = []
        y = []
        z = int(self.entry.get())
        w = int(self.entry1.get())
        i = w
        while i in range(w,z):
            x.append(i)
            for a in x:
                y[a] = math.cos((x[a]*math.pi)/180)
            i = i + 0.01
    def dra(self):
        self.mp.ion() 
        self.mp.plot(self.x,self.y)
        self.mp.title('Wykres')
        self.mp.xlabel('x')
        self.mp.ylabel('y')
        self.mp.draw()  



program(Tk()).run()

【问题讨论】:

    标签: python matplotlib draw


    【解决方案1】:

    替换:

    entry = Entry(self, justify = 'center').grid(row = 2,column = 0,columnspan = 2 ,sticky = E+ W)
    entry1 = Entry(self, justify = 'center').grid(row = 2,column = 4,columnspan = 2, sticky = E)
    

    self.entry = Entry(self, justify = 'center')
    self.entry.grid(row = 2,column = 0,columnspan = 2 ,sticky = E+ W)
    self.entry1 = Entry(self, justify = 'center')
    self.entry1.grid(row = 2,column = 4,columnspan = 2, sticky = E)
    

    否则,z = int(self.entry.get()) 行,self.entry 将不存在。此外,grid 方法不会返回任何内容,因此,如果您像以前那样在一行中执行所有操作,则会丢失您的 Entry 对象并将None 影响到entry

    【讨论】:

      【解决方案2】:

      创建变量时,您必须将它们设置为实例变量:

          self.entry = Entry(self, justify = 'center').grid(row = 2,column = 0,columnspan = 2 ,sticky = E+ W)
          self.entry1 = Entry(self, justify = 'center').grid(row = 2,column = 4,columnspan = 2, sticky = E)
      

      【讨论】:

      • 谢谢。但是还是报错:“z = int(self.entry.get()) AttributeError: 'NoneType' object has no attribute 'get'”
      猜你喜欢
      • 2013-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-06
      • 1970-01-01
      • 1970-01-01
      • 2017-12-12
      • 2021-09-20
      相关资源
      最近更新 更多