gpt4 book ai didi

gtk - 我如何知道用户点击了 Gtk.Notebook 中的哪个页面?

转载 作者:行者123 更新时间:2023-12-04 03:19:00 25 4
gpt4 key购买 nike

我有一个 Gtk.Notebook,它有一个自定义弹出菜单,当用户右键单击任何页面按钮时会显示该菜单。

我如何知道用户点击了哪个笔记本页面?我想在我的菜单中添加一个操作以使其成为当前页面。

notebook.button_press_event.connect( (wid,evt) => {
if ( evt.button==3 ) {
// which page button did the user click on?
notebook.set_current_page( «clicked no tab» );
// ... make it the current page
}
}

我尝试按位置查找选项卡:

int numtab = notebook.get_tab_at_pos((int)evt.x, (int)evt.y);

但是好像没有get_tab_at_pos之类的方法。

最佳答案

一个解决方案可能是使用 Gtk.EventBox as suggested here (PHP 代码):

$window = new GtkWindow();
$window->set_size_request(400, 240);
$window->connect_simple('destroy', array('Gtk','main_quit'));
$window->add($vbox = new GtkVBox());

// setup notebook
$notebook = new GtkNotebook(); // note 1
$vbox->pack_start($notebook);

// add two tabs of GtkLabel
add_new_tab($notebook, new GtkLabel('Notebook 1'), 'Label #1');
add_new_tab($notebook, new GtkLabel('Notebook 2'), 'Label #2');

// add a thrid tab of GtkTextView
$buffer = new GtkTextBuffer();
$view = new GtkTextView();
$view->set_buffer($buffer);
$view->set_wrap_mode(Gtk::WRAP_WORD);
add_new_tab($notebook, $view, 'TextView');

$window->show_all();
Gtk::main();

// add new tab
function add_new_tab($notebook, $widget, $tab_label) {
$eventbox = new GtkEventBox();
$label = new GtkLabel($tab_label);
$eventbox->add($label); // note 2
$label->show(); // note 3
$eventbox->connect('button-press-event', 'on_tab', $tab_label); // note 4
$notebook->append_page($widget, $eventbox); // note 5
}

// function that is called when user click on tab
function on_tab($widget, $event, $tab_label) { // note 6
echo "tab clicked = $tab_label\n";
}

关于gtk - 我如何知道用户点击了 Gtk.Notebook 中的哪个页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39571641/

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