/system/syswin.py
from system import windows
class messagebox(windows.windows):
def __init__(self,screen,message):
self.screen = screen
self.message = message
self.position_h = 200
self.position_w = 300
self.havecontrol = True
self.canbemax = False
self.canbemin = False
self.Recount()
def Show(self):
super().Show((179,217,217))
/system/windows.py
import pygame
from system import screenos
from pygame.locals import *
class windows(object):
'''系統自帶視窗類'''
def __init__(self):
pygame.init()
self.screen = None
self.position_h = 800
self.position_w = 600
self.position_y = int(screenos.screen().screen_h/2-self.position_h/2)
self.position_x = int(screenos.screen().screen_w/2-self.position_w/2)
self.canbemin = True
self.canbemax = True
self.havecontrol = True
self.control_w = 20
self.alwaystop = False
#todo
def Show(self,color):
pygame.draw.rect(self.screen,(0,0,0),(self.position_x,self.position_y,self.position_w,self.position_h),0 )
if self.havecontrol:
pygame.draw.rect(self.screen, color,(self.position_x + 1, self.position_y + self.control_w,
self.position_w - 2, self.position_h - 2), 0)
else:
pygame.draw.rect(self.screen, color,
(self.position_x+1, self.position_y+1, self.position_w-2, self.position_h-2), 0)
#todo
如題,messagebox的Show中用super呼叫父類windows的Show,結果報錯:
AttributeError: 'messagebox' object has no attribute 'control_w'。
windows類中有self.control_w但他說沒有,然而如果我在messagebox中再次賦值,他就會識別。
uj5u.com熱心網友回復:
----問題已解決----自己翻了教科書:在派生類中呼叫__init()后不會自動呼叫父類的__init()。
uj5u.com熱心網友回復:
打錯了,是__init__()轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/14958.html
上一篇:求助
下一篇:為什么國內學AMPL的那么少?
