2016-03-25 27 views
0

私の現在のコードに問題がありますので、助けが必要です。私はGoRight関数を呼び出すようにしようとしているが、それは私にエラーを与える:はAttributeError:「MyClassの」オブジェクトが属性「select_db_flag」を持っていない'MyClass'オブジェクトに属性 'select_db_flag'のエラーがありません

エラーは、この行にジャンプされています

if select_db_flag == True: 

:ここ
import move_right 

class MyClass(xbmcgui.WindowXML): 
    def GoRight(self): 
     move_right.GoRight(self) 

は、エラーが発見されたコードは次のとおりです。

は、ここで私はmove_right.pyからGoRight関数を呼び出すために使用するコードです

import datetime 
import time 
import xbmc 
import xbmcgui 

prog_id = 0 
select_db_flag = False 
program_stop_minutes = 0 
program_stop_time = 0 
epg_time_1 = '' 
epg_time_2 = '' 
epg_time_3 = '' 

def get_programming_times(self): 
    if select_db_flag == True: 
     select_db_flag = False 



def GoRight(self): 
    program_button = [elem.control for elem in self.program_buttons] 
    programs_id = list() 
    program_width = list() 
    positions_X = list() 
    positions_Y = list() 

    for elem in program_button: 
     programs_id.append(elem.getId()) 
     positions_X.append(elem.getX()) 
     positions_Y.append(elem.getY()) 
     program_width.append(elem.getWidth()) 
    programs_id = map(str, programs_id) 
    posX = map(str, positions_X) 
    posY = map(str, positions_Y) 
    program_width = map(str, program_width) 

    for pos_X, pos_Y, prog_id, prog_width in zip(positions_X, positions_Y, programs_id, program_width): 
     if int(pos_X) == 375 and int(prog_width) == 1311: 
      programs_width = 969 
      self.getControl(int(prog_id)).setWidth(int(programs_width)) 
      program_width = self.getControl(int(prog_id)).getWidth() 
      select_db_flag = True 
      program_stop_minutes, program_stop_time, epg_time_1, epg_time_2, epg_time_3 = get_programming_times(self) 


      if program_stop_time == epg_time_3: 
       if program_stop_minutes == '00': 
        if program_width == 969: 
         program_width = 692 

私はコードの上にselect_dbを定義しましたが、エラーが発生したときには役に立ちませんでした。

なぜ私にはエラーがあり、それを修正する方法を知っていますか?これで

def get_programming_times(self): 
    if select_db_flag == True: 
     select_db_flag = False 

def get_programming_times(self): 
    global select_db_flag 
    if select_db_flag == True: 
     select_db_flag = False 

あなたはグローバル変数を呼び出すので、あなたはおそらく、あまりにも他の機能にglobal select_db_flagを必要とするグローバル毎回使用する必要があります

+0

'select_db'はグローバル変数か、クラス固有の変数ですか? –

答えて

0

はこれを交換してください。

編集:コメントから 追加の問題修正:

def get_programming_times(self): 
    global select_db_flag,program_stop_minutes,program_stop_time,epg_time_1, epg_time_2,epg_time_3 
    if select_db_flag == True: 
     select_db_flag = False 
    return program_stop_minutes,program_stop_time,epg_time_1,epg_time_2,epg_time_3 

これは、エラーを修正しますが、他人が発生したり、間違った結果を返すことがあります。

インターネットからコードをコピーする場合は、ランダムにこれを行うのではなく、理解してください。

+0

また、select_db_flag == Trueではない場合は 'select select_db_flag:'を使用してください: – zondo

+0

ありがとうございます。このエラーは、 'TypeError: 'NoneType'オブジェクトがこのコード' program_stop_minutesにはありません。 program_stop_time、epg_time_1、epg_time_2、epg_time_3 = get_programming_times(self) 'なぜそれを修正するのか知っていますか? –

+0

@ user3788310まあ、get_programming_timesは何も返さないので、行は意味をなさない... – JeD

関連する問題