class CharacterWeaponWindow(BasicWindow): def __init__(self, master, character_weapon, callback, width=454, height=209, **kwargs): BasicWindow.__init__(self, master, width=width, height=height, **kwargs) self.title('CharacterWeapon') self.character_weapon = character_weapon self.callback = callback self._init_widget() self._init_content() def _init_widget(self): current_y_diff = 27 self.character_selector = CharacterSelectorCanvas(self) self.character_selector.place(x=23, y=42) self.character_selector.bind('<Return>', lambda event: self.max_atk.focus_set()) current_y = 10 current_x = 171 Label(self, width=7, text='MaxAtk', font=(SCP, 12)).place(x=current_x, y=current_y) self.max_atk = IntEntry(self, width=5, font=(SCP, 12)) self.max_atk.place(x=current_x + 10, y=current_y + current_y_diff) self.max_atk.bind('<Return>', lambda event: self.max_critical.focus_set()) current_x += 87 Label(self, width=8, text='MaxCrit.', font=(SCP, 12)).place(x=current_x, y=current_y) self.max_critical = IntEntry(self, width=5, font=(SCP, 12)) self.max_critical.place(x=current_x + 16, y=current_y + current_y_diff) self.max_critical.bind('<Return>', lambda event: self.max_armor.focus_set()) current_x += 92 Label(self, width=8, text='MaxArmor', font=(SCP, 12)).place(x=current_x, y=current_y) self.max_armor = IntEntry(self, width=5, font=(SCP, 12)) self.max_armor.place(x=current_x + 16, y=current_y + current_y_diff) self.max_armor.bind('<Return>', lambda event: self.current_atk.focus_set()) self.max_armor.bind('<Control-Return>', lambda event: self.auto_fill()) current_y += 65 current_x = 171 Label(self, width=7, text='CurAtk', font=(SCP, 12)).place(x=current_x, y=current_y) self.current_atk = IntEntry(self, width=5, font=(SCP, 12)) self.current_atk.place(x=current_x + 10, y=current_y + current_y_diff) self.current_atk.bind('<Return>', lambda event: self.current_critical.focus_set()) current_x += 87 Label(self, width=8, text='CurCrit.', font=(SCP, 12)).place(x=current_x, y=current_y) self.current_critical = IntEntry(self, width=5, font=(SCP, 12)) self.current_critical.place(x=current_x + 16, y=current_y + current_y_diff) self.current_critical.bind('<Return>', lambda event: self.current_armor.focus_set()) current_x += 92 Label(self, width=8, text='CurArmor', font=(SCP, 12)).place(x=current_x, y=current_y) self.current_armor = IntEntry(self, width=5, font=(SCP, 12)) self.current_armor.place(x=current_x + 16, y=current_y + current_y_diff) self.current_armor.bind('<Return>', lambda event: self.submitting()) # 送出、取消的按鈕 current_y += 81 Button(self, text="Submit", command=self.submitting, width=25, relief=RIDGE, font=(SCP, 11)).place( x=34, y=current_y) Button(self, text="Cancel", command=self.destroy, width=12, relief=RIDGE, font=(SCP, 11)).place( x=297, y=current_y) def _init_content(self): self.character_selector.set(self.character_weapon.character) self.max_atk.set(self.character_weapon.max_atk) self.max_critical.set(self.character_weapon.max_critical) self.max_armor.set(self.character_weapon.max_armor) self.current_atk.set(self.character_weapon.current_atk) self.current_critical.set(self.character_weapon.current_critical) self.current_armor.set(self.character_weapon.current_armor) def submitting(self): if self.current_atk.get() > self.max_atk.get() or self.current_critical.get() > self.max_critical.get() or \ self.current_armor.get() > self.max_armor.get(): raise ValueError('Current value over then max value.') self.character_weapon.character = self.character_selector.get() self.character_weapon.max_atk = self.max_atk.get() self.character_weapon.max_critical = self.max_critical.get() self.character_weapon.max_armor = self.max_armor.get() self.character_weapon.current_atk = self.current_atk.get() self.character_weapon.current_critical = self.current_critical.get() self.character_weapon.current_armor = self.current_armor.get() self.callback() self.destroy() def auto_fill(self): self.current_atk.set(self.max_atk.get()) self.current_critical.set(self.max_critical.get()) self.current_armor.set(self.max_armor.get()) self.current_armor.focus_set()
def _init_widget(self): current_y_diff = 27 self.character_selector = CharacterSelectorCanvas(self) self.character_selector.place(x=23, y=42) self.character_selector.bind('<Return>', lambda event: self.max_atk.focus_set()) current_y = 10 current_x = 171 Label(self, width=7, text='MaxAtk', font=(SCP, 12)).place(x=current_x, y=current_y) self.max_atk = IntEntry(self, width=5, font=(SCP, 12)) self.max_atk.place(x=current_x + 10, y=current_y + current_y_diff) self.max_atk.bind('<Return>', lambda event: self.max_critical.focus_set()) current_x += 87 Label(self, width=8, text='MaxCrit.', font=(SCP, 12)).place(x=current_x, y=current_y) self.max_critical = IntEntry(self, width=5, font=(SCP, 12)) self.max_critical.place(x=current_x + 16, y=current_y + current_y_diff) self.max_critical.bind('<Return>', lambda event: self.max_armor.focus_set()) current_x += 92 Label(self, width=8, text='MaxArmor', font=(SCP, 12)).place(x=current_x, y=current_y) self.max_armor = IntEntry(self, width=5, font=(SCP, 12)) self.max_armor.place(x=current_x + 16, y=current_y + current_y_diff) self.max_armor.bind('<Return>', lambda event: self.current_atk.focus_set()) self.max_armor.bind('<Control-Return>', lambda event: self.auto_fill()) current_y += 65 current_x = 171 Label(self, width=7, text='CurAtk', font=(SCP, 12)).place(x=current_x, y=current_y) self.current_atk = IntEntry(self, width=5, font=(SCP, 12)) self.current_atk.place(x=current_x + 10, y=current_y + current_y_diff) self.current_atk.bind('<Return>', lambda event: self.current_critical.focus_set()) current_x += 87 Label(self, width=8, text='CurCrit.', font=(SCP, 12)).place(x=current_x, y=current_y) self.current_critical = IntEntry(self, width=5, font=(SCP, 12)) self.current_critical.place(x=current_x + 16, y=current_y + current_y_diff) self.current_critical.bind('<Return>', lambda event: self.current_armor.focus_set()) current_x += 92 Label(self, width=8, text='CurArmor', font=(SCP, 12)).place(x=current_x, y=current_y) self.current_armor = IntEntry(self, width=5, font=(SCP, 12)) self.current_armor.place(x=current_x + 16, y=current_y + current_y_diff) self.current_armor.bind('<Return>', lambda event: self.submitting()) # 送出、取消的按鈕 current_y += 81 Button(self, text="Submit", command=self.submitting, width=25, relief=RIDGE, font=(SCP, 11)).place( x=34, y=current_y) Button(self, text="Cancel", command=self.destroy, width=12, relief=RIDGE, font=(SCP, 11)).place( x=297, y=current_y)