gpt4 book ai didi

perl - gtk entry set_position 不移动光标

转载 作者:行者123 更新时间:2023-12-01 05:02:46 24 4
gpt4 key购买 nike

为什么这段代码没有将光标移动到条目的最后一个字符?

use Gtk2 '-init';
my $window = Gtk2::Window->new;
my $entry = Gtk2::Entry->new;

my $handler;
$handler = $entry->signal_connect ( 'insert-text' =>
sub {
my (
$entry,
$chrs,
$len,
$pos_strange,
$handler,
) = @_;
$entry->signal_handler_block ( $$handler );
$entry->set_text ( 'tryme' );
$entry->signal_stop_emission_by_name ('insert-text');
$entry->signal_handler_unblock ( $$handler );
$entry->set_position ( -1 );
},
\$handler
);

$window->set_size_request ( 200, 100 );
$window->add ( $entry );
$window->set_position ('center_always');
$window->show_all;
$window->signal_connect ( delete_event => sub { Gtk2->main_quit; } );
Gtk2->main;

最佳答案

当最后一个 insert-text 处理程序返回时,Gtk 使用 pos 的值更新光标位置,因此您的代码移动光标,然后 Gtk 再次移动它。您可以按照上面的建议使用空闲回调,但在您的处理程序中更新 pos 可能会更干净。您想执行 *pos = g_utf8_strlen ("tryme"), 0) 而不是 $entry->set_position ( -1 );

关于perl - gtk entry set_position 不移动光标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18674005/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com