def on_edit_linktext(self, menuitem, linked):
idx = self.m_model.index(linked)
# row is the hbox containing the linkbutton
row = self.g_link_box.get_children()[idx]
linkbutton = row.get_children()[0]
entry = Gtk.Entry()
entry.set_text(linkbutton.get_label())
row.pack_start(entry, True, True, 0)
linkbutton.hide()
entry.show()
entry.grab_focus()
def finish_edit(entry):
linkbutton.set_label(entry.get_text().decode("utf-8"))
linkbutton.get_children()[0].set_alignment(0.0, 0.5)
linkbutton.show()
self.m_model[idx].m_name = entry.get_text().decode("utf-8")
entry.destroy()
sid = entry.connect('activate', finish_edit)
def keydown(entry, event):
if event.keyval == Gdk.KEY_Tab:
finish_edit(entry)
entry.connect('key-press-event', keydown)
def keyup(entry, event):
if event.keyval == Gdk.KEY_Escape:
linkbutton.show()
entry.disconnect(sid)
entry.destroy()
return True
entry.connect('key-release-event', keyup)
python类Entry()的实例源码
def __init__(self, filename=None):
Gtk.Window.__init__(self)
logging.debug("fpeditor.Editor.__init__(%s)", filename)
gu.EditorDialogBase.__init__(self, filename)
self.set_default_size(800, 600)
self.g_main_box = Gtk.VBox()
self.add(self.g_main_box)
self.g_actiongroup.add_actions([
('GoBack', Gtk.STOCK_GO_BACK, None, None, None, self.go_back),
])
self.setup_toolbar()
self.g_title_hbox = Gtk.HBox()
self.g_title_hbox.set_spacing(gu.hig.SPACE_SMALL)
self.g_title_hbox.set_border_width(gu.hig.SPACE_SMALL)
label = Gtk.Label()
label.set_markup(u"<b>%s</b>" % _("Front page title:"))
self.g_title_hbox.pack_start(label, False, False, 0)
self.g_fptitle = Gtk.Entry()
self.g_title_hbox.pack_start(self.g_fptitle, True, True, 0)
self.g_main_box.pack_start(self.g_title_hbox, False, False, 0)
# This dict maps the windows created for all pages belonging to
# the file.
self.m_page_mapping = {}
self.m_model = None
if filename:
self.load_file(filename)
else:
self.m_model = pd.Page(_("Untitled%s") % self.m_instance_number,
pd.Column())
self.set_not_modified()
self.add_page(Page(self.m_model, self))
self.clipboard.update_buttons()
self.show_all()
self.add_to_instance_dict()
self.g_fptitle.set_text(self.m_model.m_name)
self.g_fptitle.connect('changed', self.on_frontpage_title_changed)
def show_bug_reports(self, *v):
m = Gtk.Dialog(_("Question"), self, 0)
m.add_button(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL)
m.add_button(Gtk.STOCK_OK, Gtk.ResponseType.OK)
vbox = Gtk.VBox()
m.vbox.pack_start(vbox, False, False, 0)
vbox.set_spacing(18)
vbox.set_border_width(12)
l = Gtk.Label(label=_("Please enter the email used when you submitted the bugs:"))
vbox.pack_start(l, False, False, 0)
self.g_email = Gtk.Entry()
m.action_area.get_children()[0].grab_default()
self.g_email.set_activates_default(True)
vbox.pack_start(self.g_email, False, False, 0)
m.show_all()
ret = m.run()
m.destroy()
if ret == Gtk.ResponseType.OK:
params = urllib.urlencode({
'pagename': 'SITS-Incoming/SearchBugs',
'q': 'SITS-Incoming/"Submitter: %s"' % utils.mangle_email(self.g_email.get_text().decode("utf-8")()),
})
try:
webbrowser.open_new("http://www.solfege.org?%s" % params)
except Exception, e:
self.display_error_message2(_("Error opening web browser"), str(e))
def __init__(self, app):
super().__init__(_('Password:'), app.window, Gtk.DialogFlags.MODAL,
(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,
Gtk.STOCK_OK, Gtk.ResponseType.OK))
self.set_default_response(Gtk.ResponseType.OK)
self.set_default_size(320, 100)
self.set_border_width(10)
box = self.get_content_area()
self.entry = Gtk.Entry()
self.entry.props.placeholder_text = _('Password ...')
box.pack_start(self.entry, False, False, 0)
box.show_all()
def __init__(self, parent, app, path):
super().__init__(_('New Folder'), app.window, Gtk.DialogFlags.MODAL,
(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,
Gtk.STOCK_OK, Gtk.ResponseType.OK))
self.set_default_response(Gtk.ResponseType.OK)
self.connect('show', self.on_show)
self.set_default_size(550, 200)
self.app = app
self.path = path
self.set_border_width(10)
box = self.get_content_area()
folder_name = _('New Folder')
abspath = os.path.join(path, folder_name)
self.entry = Gtk.Entry()
self.entry.set_text(abspath)
self.entry.connect('changed', self.on_entry_changed)
self.entry.connect('activate', self.on_entry_activated)
box.pack_start(self.entry, True, True, 10)
self.infobar = Gtk.InfoBar()
self.infobar.timestamp = 0
self.infobar.set_message_type(Gtk.MessageType.ERROR)
box.pack_start(self.infobar, False, False, 0)
self.info_label= Gtk.Label()
self.infobar.get_content_area().pack_start(self.info_label, False,
False, 0)
box.show_all()
self.infobar.hide()
def __init__(self, parent, app, info):
super().__init__(_('Verification..'), app.window,
Gtk.DialogFlags.MODAL,
(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,
Gtk.STOCK_OK, Gtk.ResponseType.OK))
self.set_default_response(Gtk.ResponseType.OK)
self.set_default_size(320, 200)
self.set_border_width(10)
self.app = app
box = self.get_content_area()
box.set_spacing(10)
gutil.async_call(net.urlopen, info['img'],
{'Cookie': app.cookie.header_output()},
callback=self.update_img)
self.img = Gtk.Image()
box.pack_start(self.img, False, False, 0)
self.entry = Gtk.Entry()
self.entry.connect('activate',
lambda *args: self.response(Gtk.ResponseType.OK))
box.pack_start(self.entry, False, False, 0)
box.show_all()
def get_string_from_user(window, message, title="Input required", max_length=None):
dialog = Gtk.MessageDialog(window,
Gtk.DialogFlags.MODAL | Gtk.DialogFlags.DESTROY_WITH_PARENT,
Gtk.MessageType.QUESTION,
Gtk.ButtonsType.OK_CANCEL,
message)
dialog.set_title(title)
dialog.set_default_response(Gtk.ResponseType.OK)
dialog_box = dialog.get_content_area()
input_entry = Gtk.Entry()
input_entry.set_size_request(350,0)
if max_length != None:
print("Setting max length to", max_length)
input_entry.set_max_length(max_length)
input_entry_holder = Gtk.Box()
input_entry_holder.pack_end(input_entry, True, False, 0)
dialog_box.pack_end(input_entry_holder, False, False, 0)
dialog.show_all()
def input_entry_activate(*args):
print("Enter pressed")
dialog.response(Gtk.ResponseType.OK)
input_entry.connect('activate', input_entry_activate)
response = dialog.run()
text = input_entry.get_text()
dialog.destroy()
if (response != Gtk.ResponseType.OK) or len(text) == 0:
return None
return text
def create_seek_buttons(self):
self.hbox = Gtk.HBox(False, 1)
self.back = Gtk.Button()
self.back_img = Gtk.Image()
self.back_img.set_from_stock(Gtk.STOCK_GO_BACK, Gtk.IconSize.MENU)
self.back.set_image(self.back_img)
self.back.set_relief(Gtk.ReliefStyle.NONE)
self.back.connect('clicked', self.do_seek, 'b')
self.forward = Gtk.Button()
self.forward_img = Gtk.Image()
self.forward_img.set_from_stock(Gtk.STOCK_GO_FORWARD, Gtk.IconSize.MENU)
self.forward.set_image(self.forward_img)
self.forward.set_relief(Gtk.ReliefStyle.NONE)
self.forward.connect('clicked', self.do_seek, 'f')
self.seek = Gtk.Entry()
self.seek.set_max_length(30)
self.seek.set_icon_from_stock(1, Gtk.STOCK_JUMP_TO)
self.seek.set_activates_default(True)
self.seek.connect("activate", self.goto)
self.seek.connect("icon-press", self.goto)
self.seek.set_icon_tooltip_text(1, 'Go')
self.hbox.pack_start(self.back, False, False, 0)
self.hbox.pack_start(self.forward, False, False, 0)
self.hbox.pack_start(self.seek, True, True, 0)
return self.hbox
def insert_image(self, widget):
self.insert_window_image = Gtk.Window()
self.insert_window_image.set_title("Insert Image")
self.insert_window_image.set_resizable(True)
self.insert_window_image.set_border_width(6)
self.insert_window_image.set_default_size(300, 250)
self.insert_window_image.set_position(Gtk.WindowPosition.CENTER)
vbox = Gtk.VBox()
label_alt_text = Gtk.Label("Alt Text:")
self.entry_alt_text_i = Gtk.Entry()
label_title = Gtk.Label("Title:")
self.entry_title_i = Gtk.Entry()
label_url = Gtk.Label("Path/Url:")
self.entry_url_i = Gtk.Entry()
vbox.pack_start(label_alt_text, self, False, False)
vbox.pack_start(self.entry_alt_text_i, self, False, False)
vbox.pack_start(label_title, self, False, False)
vbox.pack_start(self.entry_title_i, self, False, False)
vbox.pack_start(label_url, self, False, False)
self.hbox_url = Gtk.HBox()
self.hbox_url.pack_start(self.entry_url_i, self, True, False)
self.path_file_button = Gtk.FileChooserButton(title= "Select an image")
self.path_file_button.connect("file-set", self.file_chooser_button_clicked)
self.hbox_url.pack_start(self.path_file_button, self, False, False)
vbox.pack_start(self.hbox_url, self, False, False)
button = Gtk.Button("Insert Image")
vbox.pack_end(button, self, False, False)
self.insert_window_image.add(vbox)
self.insert_window_image.show_all()
button.connect("clicked", self.insert_image_cmd, self.insert_window_image)
def insert_link(self, widget):
self.insert_window_link = Gtk.Window()
self.insert_window_link.set_title("Insert Link")
self.insert_window_link.set_resizable(True)
self.insert_window_link.set_border_width(6)
self.insert_window_link.set_default_size(350, 250)
self.insert_window_link.set_position(Gtk.WindowPosition.CENTER)
vbox = Gtk.VBox()
label_alt_text = Gtk.Label("Alt Text:")
self.entry_alt_text = Gtk.Entry()
label_url = Gtk.Label("Url:")
self.entry_url = Gtk.Entry()
vbox.pack_start(label_alt_text, self, False, False)
vbox.pack_start(self.entry_alt_text, self, False, False)
vbox.pack_start(label_url, self, False, False)
vbox.pack_start(self.entry_url, self, False, False)
button = Gtk.Button("Insert Link")
vbox.pack_end(button, self, False, False)
# Use highligted text as the default "alt text"
if self.text_buffer.get_has_selection():
start, end = self.text_buffer.get_selection_bounds()
text = self.text_buffer.get_text(start, end, True)
self.entry_alt_text.set_text(text)
self.insert_window_link.add(vbox)
self.insert_window_link.show_all()
button.connect("clicked", self.insert_link_cmd, self.insert_window_link)
def __init__(self, parent):
Gtk.Dialog.__init__(self, "Search", parent,
Gtk.DialogFlags.MODAL, buttons=(
Gtk.STOCK_FIND, Gtk.ResponseType.OK,
Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL))
box = self.get_content_area()
label = Gtk.Label("Insert text you want to search for:")
box.add(label)
self.entry = Gtk.Entry()
box.add(self.entry)
self.show_all()
def __init__(self):
Gtk.Window.__init__(self, title="FileChooser Example")
self.maximize()
self.fold_str = None
self.grid = Gtk.Grid(column_homogeneous=False,
column_spacing=10,
row_spacing=0)
self.add(self.grid)
button1 = Gtk.Button("Choose File")
button1.connect("clicked", self.on_file_clicked)
self.grid.add(button1)
self.text_file = Gtk.Entry()
self.grid.attach(self.text_file,1,0,4,1)
button2 = Gtk.Button("Choose Folder")
button2.connect("clicked", self.on_folder_clicked)
button2.set_relief(Gtk.ReliefStyle(0))
self.grid.attach_next_to(button2,button1,Gtk.PositionType.BOTTOM,1,1)
self.text_folder = Gtk.Entry()
self.grid.attach(self.text_folder,1,1,4,1)
but3=buttontest()
self.grid.attach(but3,0,2,1,1)
def add_prereq(self, button=None, prereq=None):
"""Create a new prereq entry field."""
new_entry = Gtk.Entry()
change_box = self.create_change_box()
if prereq is not None:
new_entry.set_text(prereq)
self.prereq_box.pack_start(new_entry, True, True, 0)
self.change_buttons_box.pack_end(change_box, True, True, 0)
self.show_all()
def double_click(self, widget, event):
if event.type == Gdk.EventType._2BUTTON_PRESS:
if not self.has_entry:
self.label.destroy()
self.entry = Gtk.Entry()
self.entry.connect('activate', self.enter_key)
self.entry.set_text(self.text)
self.add(self.entry)
self.text = None
self.show_all()
self.has_entry = True
return True
def __init__(self, parent):
Gtk.Dialog.__init__(self, "Search", parent,
Gtk.DialogFlags.MODAL, buttons=(
Gtk.STOCK_FIND, Gtk.ResponseType.OK,
Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL))
box = self.get_content_area()
label = Gtk.Label("Insert text you want to search for:")
box.add(label)
self.entry = Gtk.Entry()
box.add(self.entry)
self.show_all()
def __init__(self, name, value, escape=True):
super().__init__()
self.set_orientation(Gtk.Orientation.HORIZONTAL)
self.set_hexpand(True)
self.set_halign(Gtk.Align.FILL)
if escape:
try:
name = name.encode('unicode_escape').decode('utf8')
except UnicodeDecodeError:
pass
try:
value = value.encode('unicode_escape').decode('utf8')
except UnicodeDecodeError:
pass
self.name_entry = Gtk.Entry()
self.name_entry.props.margin = ITEM_MARGIN
self.name_entry.set_text(name)
self.value_entry = Gtk.Entry()
self.value_entry.props.margin = ITEM_MARGIN
self.value_entry.set_text(value)
self.delete_btn = Gtk.Button.new_from_icon_name(
'edit-delete-symbolic',
Gtk.IconSize.SMALL_TOOLBAR
)
self.delete_btn.props.margin = ITEM_MARGIN
self.add(self.name_entry)
self.add(self.value_entry)
self.add(self.delete_btn)
self.show_all()
def __init__(self):
super().__init__()
self.set_name('HistoriesManagerBox')
self.set_orientation(Gtk.Orientation.HORIZONTAL)
self.set_halign(Gtk.Align.END)
self.set_valign(Gtk.Align.CENTER)
self.set_hexpand(True)
self.set_vexpand(False)
self.link = Gtk.LinkButton()
self.link.connect('activate-link', self._on_activate_link)
self.link.set_label('...')
self.link.set_tooltip_text(_('Open histories manager'))
self._entry = Gtk.Entry()
self._entry.set_placeholder_text(_('New history'))
self._entry.set_icon_from_icon_name(
Gtk.EntryIconPosition.PRIMARY,
'list-add-symbolic'
)
self._entry.connect('activate', self._on_entry_activate)
self._box = Gtk.Box()
self._box.set_orientation(Gtk.Orientation.VERTICAL)
self._box.add(self._entry)
self.popover = Gtk.Popover()
self.popover.set_relative_to(self.link)
self.popover.add(self._box)
self.add(self.link)
gpaste_client.connect('SwitchHistory', self.update)
gpaste_client.connect('DeleteHistory', self.update)
self.update()
def add_entry(self, text, key):
item = Gtk.Entry()
item.set_hexpand(False)
item.set_text(self._settings[key])
self._settings.bind(key, item, 'text', Gio.SettingsBindFlags.DEFAULT)
return self.add_row(text, item)
def __init__(self):
# create a new window
window = Gtk.Window()
window.set_position(Gtk.WindowPosition.CENTER)
window.set_name('window')
window.set_title("Input Helper")
window.set_decorated(False)
window.set_default_size(300, 40)
window.connect("destroy", self.destroy)
self.entry = Gtk.Entry()
self.entry.set_name('entry')
self.entry.connect("key_press_event", self.on_key_press)
self.clipboard = Gtk.Clipboard.get(Gdk.SELECTION_CLIPBOARD)
style_provider = Gtk.CssProvider()
base_dir = os.path.abspath(os.path.dirname(__file__))
css_path = os.path.join(base_dir, 'input_paste.css')
style_provider.load_from_file(Gio.File.new_for_path(css_path))
Gtk.StyleContext.add_provider_for_screen(
Gdk.Screen.get_default(),
style_provider,
Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION
)
window.add(self.entry)
window.show_all()
def __init__(self, window, format="dmy", separator='/', value = datetime.date.today()):
Gtk.HBox.__init__(self)
self.format = format
self.separator = separator
self._window = window
self.entry = Gtk.Entry()
self.entry.set_editable(False)
self.button = Gtk.Button()
self.button.add(Gtk.Arrow.new(Gtk.ArrowType.DOWN, Gtk.ShadowType.IN))
self.button.connect('clicked', self.on_button)
self.pack_start(self.entry, 0, 0, 0)
self.pack_start(self.button, 0, 0, 0)
self.month_changed = False
self.set_date(value)