def _fill_container(container, items, options, id_name):
for item in items:
hbox = gtk.HBox()
label_id = gtk.Label()
label_id.set_text(str(getattr(item, id_name)))
hbox.pack_start(label_id, expand=False)
widget = gtk.RadioButton(label=options[0]) # first widget
hbox.pack_start(widget, expand=False, padding=4)
for option in options[1:]: # create rest of the widgets, use first one as a group
next_widget = gtk.RadioButton(widget, label=option)
hbox.pack_start(next_widget, expand=False, padding=4)
label = gtk.Label()
label.set_text(item.name)
hbox.pack_start(label, padding=16, expand=False)
hbox.show_all()
label_id.hide()
container.pack_start(hbox)
python类RadioButton()的实例源码
def delete_format(self, widget, data=None):
# ???? ???????? gtk.RadioButton
for format_id in self.format_radio:
if format_id.get_active():
# ?????????? ??????, ? ??????? ???????? ???????????? ?????????? ???? ?????
dialog = gtk.Dialog('???????? ??????? "' + self.data['formats'][self.format_radio.index(format_id)]['name'] + '"', self.window, gtk.DIALOG_NO_SEPARATOR | gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT, (gtk.STOCK_NO, gtk.RESPONSE_CANCEL, gtk.STOCK_YES, gtk.RESPONSE_OK))
dialog.set_position(gtk.WIN_POS_CENTER_ALWAYS)
dialog.set_resizable(False)
dialog.set_border_width(10)
self.confirmation_label = gtk.Label('?? ????????????? ?????? ??????? ?????? "' + self.data['formats'][self.format_radio.index(format_id)]['name'] + '"?')
dialog.vbox.pack_start(self.confirmation_label, True, True, 5)
dialog.show_all()
response = dialog.run()
if response == gtk.RESPONSE_CANCEL:
dialog.hide()
dialog.destroy()
if response == gtk.RESPONSE_OK:
# ??????? ??????
name = self.data['formats'][self.format_radio.index(format_id)]['name']
del self.data['formats'][self.format_radio.index(format_id)]
config = open(self.path, 'wb')
json.dump(self.data, config)
config.close()
self.format_radio[self.format_radio.index(format_id)].hide()
if len(self.format_radio) == 1:
pass
elif self.format_radio.index(format_id) + 1 <= len(self.format_radio) - 1:
self.format_radio[self.format_radio.index(format_id) + 1].set_active(True)
elif self.format_radio.index(format_id) + 1 > len(self.format_radio) - 1:
self.format_radio[self.format_radio.index(format_id) - 1].set_active(True)
del self.format_radio[self.format_radio.index(format_id)]
if len(self.format_radio) < 1:
self.delete_button.set_sensitive(False)
self.edit_button.set_sensitive(False)
self.add_success_label.set_markup('<span foreground="#008600">"' + str(name) + '" ??????? ??????\n</span>')
dialog.hide()
dialog.destroy()
break
# ??? ??????? ???????????? ?????????? ?????? ???????
def create_radio_hbox(self, label, value, trace, sensitivity_group, constraints=None):
hbox_main = gtk.HBox()
label_text = gtk.Label(label.title())
label_text.set_alignment(0, 0.5)
label_text.set_padding(8,8)
radiobuttons = []
if constraints is None:
options = [value]
else:
options = constraints
previous_button = None
for option in options:
new_button = gtk.RadioButton(previous_button, option)
if option == value:
new_button.set_active(True)
radiobuttons.append(new_button)
previous_button = new_button
hbox_main.pack_start(label_text)
for radiobutton in radiobuttons:
hbox_main.pack_start(radiobutton)
self.plugin_config_widgets.append(radiobuttons)
self.plugin_config_traces.append(trace)
sensitivity_group.append(label_text)
sensitivity_group.append(radiobuttons)
return hbox_main
def auto_execute(self, widget, data=None):
# ???????? ????, ???? ?? ??????
self.window.hide()
gimp.context_push()
# ????????? ?????? ?????????? UNDO
self.image.undo_group_start()
# ???????? "????-??????"
if self.autolevels_check.get_active():
auto_levels = True
else:
auto_levels = False
# ???? ???????? gtk.RadioButton
for format_id in self.format_radio:
if format_id.get_active():
# ????????? ??????? ??????? ? ??????? ? ???????
tmp_dict = self.data['formats'][self.format_radio.index(format_id)]
tmp_dict['resolution'] = self.data['properties']['resolution']
shelf['format'] = tmp_dict
# ???? gtk.RadioButton ??????? ???????? ???????, ??????? ????????? ????
# ? ???????? ?????????? ???????? ?? ????????? ?? ???????????
# ? ?????? ? ??????????? ????????? ???????
self.create_id_foto(self.image, self.drawable, shelf['format'], auto_levels)
if data == 'auto_execute':
# ?????? ???????
self.image.scale(self.mm_in_px(shelf['format']['width'], shelf['format']['resolution']), self.mm_in_px(shelf['format']['height'], shelf['format']['resolution']))
if self.data['formats'][self.format_radio.index(format_id)]['angle']:
self.angle(self.image, self.drawable, self.data['formats'][self.format_radio.index(format_id)]['angle'])
if self.data['formats'][self.format_radio.index(format_id)]['oval']:
self.oval(self.image, self.drawable)
if self.data['formats'][self.format_radio.index(format_id)]['to_grayscale']:
self.to_grayscale(self.image, self.drawable)
if self.data['formats'][self.format_radio.index(format_id)]['gray_frame']:
self.gray_frame(self.image)
copys = self.data['formats'][self.format_radio.index(format_id)]['copys']
paper = self.data['formats'][self.format_radio.index(format_id)]['paper']
print_photo = self.data['formats'][self.format_radio.index(format_id)]['print_photo']
self.print_functon(self.image, self.drawable, paper, copys, print_photo)
break
# ????????? ???????????? ?? ???????
gimp.displays_flush()
# ????????? ?????? ?????????? UNDO
self.image.undo_group_end()
gimp.context_pop()
gtk.main_quit()
# ??? ??????? ?????? ????????? ???????? ?????????
# ? ??? ??????? ??????????? ?? ????????? ??????? ???? ??????????