DLabel/draw.simpletext refresh on DPanel

Why is this not refreshing the text automatically? Its in the paint function so it should, shouldn’t it?

local weapon = LocalPlayer():GetNWInt( ‘primaryweapon’ )

local PrimaryWeapon = vgui.Create( “DPanel”, self)
PrimaryWeapon:SetPos( 100, 110 )
PrimaryWeapon:SetSize( 350, 50 )
PrimaryWeapon.Paint = function()
surface.SetDrawColor( 0, 0, 0, 0 )
surface.DrawRect( 0, 0, PrimaryWeapon:GetWide(), PrimaryWeapon:GetTall() )
draw.SimpleText( weapon, “Weapon_Font”, 100, 0, Color(255, 255, 255, 255), TEXT_ALIGN_CENTER )

weapon is defined once outside of the Paint function, so whenever the draw.SimpleText is called the value passed is always the same as when weapon was first defined. In order for this value to update you must move the variable weapon into the (preferably the first line of, or at least before you try to draw the text) the Paint function.