首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

给定一个Gtk Notebook,如何将页面拖放到新窗口?

在Gtk中,可以通过使用拖放功能将页面从一个Gtk Notebook拖放到新窗口。下面是实现这个功能的步骤:

  1. 首先,需要创建一个新的窗口,可以使用Gtk.Window类来实现。可以设置窗口的标题、大小和其他属性。
  2. 创建一个新的Gtk Notebook,可以使用Gtk.Notebook类来实现。将需要拖放的页面添加到该Notebook中。
  3. 为Gtk Notebook启用拖放功能,可以使用Gtk.Notebook的drag_source_set()方法。将拖放源设置为Notebook的标签页。
  4. 为新窗口启用拖放功能,可以使用Gtk.Window的drag_dest_set()方法。将新窗口设置为拖放目标。
  5. 实现拖放操作的回调函数。可以使用Gtk.Widget的drag_data_get()和drag_data_received()方法来处理拖放数据。
  6. 在回调函数中,将拖放的页面从原始的Gtk Notebook中移除,并将其添加到新窗口的Gtk Notebook中。

下面是一个示例代码,演示如何将页面从一个Gtk Notebook拖放到新窗口:

代码语言:txt
复制
import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk

def on_drag_data_get(widget, drag_context, data, info, time):
    # 获取拖放数据
    notebook = widget.get_parent()
    page_num = notebook.page_num(widget)
    data.set_text(str(page_num), -1)

def on_drag_data_received(widget, drag_context, x, y, data, info, time):
    # 接收拖放数据
    page_num = int(data.get_text())
    notebook = widget.get_parent()
    page = notebook.get_nth_page(page_num)
    notebook.remove_page(page_num)

    new_notebook = Gtk.Notebook()
    new_notebook.append_page(page, Gtk.Label(label="New Page"))
    new_window = Gtk.Window()
    new_window.add(new_notebook)
    new_window.show_all()

def main():
    window = Gtk.Window()
    notebook = Gtk.Notebook()

    # 添加页面到Gtk Notebook
    page1 = Gtk.Label(label="Page 1")
    page2 = Gtk.Label(label="Page 2")
    notebook.append_page(page1, Gtk.Label(label="Page 1"))
    notebook.append_page(page2, Gtk.Label(label="Page 2"))

    # 启用拖放功能
    notebook.drag_source_set(Gtk.TargetEntry.new("text/plain", 0, 0), Gdk.DragAction.COPY)
    window.drag_dest_set(Gtk.DestDefaults.ALL, [Gtk.TargetEntry.new("text/plain", 0, 0)], Gdk.DragAction.COPY)

    # 连接拖放信号
    notebook.connect("drag-data-get", on_drag_data_get)
    window.connect("drag-data-received", on_drag_data_received)

    window.add(notebook)
    window.show_all()
    Gtk.main()

if __name__ == "__main__":
    main()

这个示例代码创建了一个包含两个页面的Gtk Notebook。通过启用拖放功能,并实现相应的回调函数,可以将页面从Gtk Notebook拖放到新窗口中。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Python 常用的GUI框架都有哪些

Pyqt QT是一个C ++编写的跨平台的框架。这是一个非常全面的库。1991年奇趣科技公司开发的C++ GUI应用程序,2014年发布了Qt5.3正式版。...QT带来的最大好处就是它有一个QT Desiginer,这个设计器可以方便我们进行页面的布局,可以说在Tkinter里面需要一坨坨的代码完成的页面布局,在QT里面只要控件就搞定了。 ?...PyGTK -GTK 在Linux中常用的“GTK+”是“PyGTK”的“GTK +”封装。...它提供数据库访问,商业逻辑以及用户界面 Pyforms 一个用于开发GUI应用程序的Python 2.7 / 3.x跨环境运行框架。...PyGObject 可以为GNOME项目编写Python应用程序,你也可以使用GTK +编写Python应用程序。 关于框架的选择,没有最好的,只有最适合的。

2.9K10
  • WebRTCChromium在2020年的更新

    一页是用于屏幕共享,以发出一个门户请求,第二页是用于窗口共享,这是另一个门户请求,最后一页是允许共享已打开的web页面。...您必须确认两个门户对话框,然后确认Chromium对话框,最后你还会得到一个额外的门户对话框来获取web页面本身的内容。 我有一个解决方案。...我用一个ID进行了所有的门户调用,并在Chromium预览对话框的两个页面之间以及对网页本身的请求中用Chromium共享了这个ID(门户调用)。使用此解决方案,我们只有一个门户对话框。...我也不希望上游开发者能给我更多的帮助,因为关于Wayland, portals和PipeWire以及如何将它们整合在一起还有许多需要理解的内容。...我至少尝试将其简化为一个门户对话框。这是通过删除用于窗口共享的页面来完成的,因为屏幕共享请求将同时处理屏幕和窗口。

    1.2K30

    将自动通知窗体集成到类中

    我碰到一个页面的通知功能做的还挺不错的,就分析了下代码,发现主要有三部分组成。         1、javascript代码部分。主要是一些函数和一条调用语句,放在body的前面。        ...于是测试了一下,发现它是将插入内容原封不动的插入到页面代码中,所以,它不仅可以插js代码,其它的两种代码也可以。         再测试了一下,样式代码放到body内,发现没有问题。         ...于是思路就定了,制作一个类NoteWindow,有一个静态的(最近特别喜欢用这个,特别是在一些辅助性的类中)函数ShowNote,直接就将这个代码就插入了。...同时,传递一些参数,比如文字,url,背景图,是否在新窗口中显示。         ...唯一的难度,就是如何将整段的代码写到程序中,http://jetz.cnblogs.com/archive/2005/10/01/247966.html         最后,调用就很简单了

    82070

    Linux Lite 6.0 抛弃 Firefox 支持 Google Chrome 作为默认浏览器

    Linux Lite 6.0:概述Linux Lite 6.0 包含许多更改,包括:更新的软件新窗口主题新的屏幕键盘屏幕阅读器屏幕放大镜Firefox 被 Chrome 取代为默认浏览器新的 grub...新窗口主题图片Linux Lite 6.0 引入了一个名为“ Materia ”的新窗口主题,主题社区中的人可能会非常熟悉它,因为它已被移植到几乎每个平台,其中包括 GTK 2、3 和 4、GNOME...谷歌浏览器是新的默认浏览器图片随着 Ubuntu 将其 Firefox 版本转移到一个 snap 应用程序,Linux Lite 已经完全放弃了 Firefox,转而使用 Google Chrome。...此外,如果您想在访问文件之前对其进行扫描,Linux Lite 开发人员会在 Chrome 中包含一个 Virus Total 扫描程序扩展(默认禁用)。...总结Linux Lite 6.0 似乎是一个可靠的版本,特别是对于那些等待辅助功能和视觉更新的人。如果您想自己尝试一下,可以从官方下载页面获得 ISO 文件。

    2.5K30

    你知道Jupyter notebook还可以用来做 “视频聊天室” 吗?

    小工具组件是多种的Python对象,通常在Jupyter Notebook或JupyterLab中具有可视化表示:按钮,滑块,文本输入,复选框等。...你可以使用自己喜欢的库(OpenCV,scikit-image 等)轻松操作此数据,并动态更新窗口小组件值。 ?...媒体流小组件也可以是: 一个WidgetStream小组件,给定任何输入小组件 一个VideoStream小组件,给定一个视频小组件作为输入 一个ImageStream小组件,给定一个图像小组件作为输入...一个AudioStream小组件,给定一个音频小部件作为输入 一个CameraStream小组件,它为用户的网络摄像头创建视频/音频流 使用媒体流小组件,你可以: 使用VideoRecorder...此功能将聊天室名称和你要共享的流(默认为CameraStream)作为输入,并允许您将Jupyter Notebook转换为会议室! ?

    2K10

    Matplotlib 中文用户指南 7.1 交互式导航

    这类似于尝试在访问新页面之前单击 Web 浏览器上的返回 - 什么都不会发生。 首页总是你第一个浏览的页面,以及你的数据的默认视图。...Zoom-to-rectangle(缩放到矩形)按钮 单击此工具栏按钮以激活此模式。 将鼠标放在轴域的某处,然后按鼠标左键。 在按住按钮的同时拖动鼠标到新位置并释放。...在此模式中还有一个实验性的zoom out to rectangle(缩小到矩形),使用右键,将整个轴域缩小并放置在矩形定义的区域中。...命令 快捷键 主页/重置 h、r或home 后退 c、左箭头或backspace 前进 v或右箭头 平移/缩放 p 缩放到矩形 o 保存 ctrl + s 切换全屏 ctrl + f 关闭绘图 ctrl...in GTK") vbox = gtk.VBox() win.add(vbox) fig = Figure(figsize=(5,4), dpi=100) ax = fig.add_subplot

    2.1K20

    致Python初学者 | Anaconda入门使用指南之安装篇

    点击进入之后,你就可以往下,拖到最下面。 看到这里提供了不同版本的安装程序,你可以根据自己的版本去选择。是Windows,苹果电脑,还是Linux。...它是帮你把Python放到环境变量里,会省下你之后配置的大量时间。所以这里一到点上,不要怕后下面有红色字符出来,没有问题。 下面一个勾默认就是点着的,你就把它点好就好。...这里会弹出很多的软件,其中还有 Jupyter Notebook。 我们只要选择绿色圆环的 Anaconda Navigator,点击它,进入到启动界面会有一个绿色圆环显示在桌面上。...稍等一会儿就会弹出这样一个 Anaconda Navigator 的操作页面。...在这里我们用的最多的软件就是这个 Jupyter Notebook,也就是日常用来编辑代码的界面,点击这里的 Launch,会自动打开你的默认浏览器。

    49430

    【Rust日报】 2019-07-09:「官方」async-await状态报告 #2

    「系列」使用Rust和GTK绘图 Part I #GTK 作者对于Rust和GTK都是新手,这是他的学习心得记录。...Read More 使用GTK和Rust的加速桌面应用程序 #GTK Read More 「系列」std::alloc 指南 #alloc std::alloc在1.36稳定版中发布,这篇文章较为详细的介绍了...Read More Rust和Yew指南 #yew #wasm 这是一篇比较详尽的Yew使用指南,使用Yew和Rust来构建前端页面。...More 「官方」async-await状态报告 #2 #async #await 官方核心组Leader Niko的新文,主要阐述了三件事: async/await MVP的状态 目前的工作目标,以及如何将其纳入更大的愿景...Read More maybe-uninit: 为所有Rust版本支持MaybeUninit Rust最近发布的1.36.0版本带来了一个MaybeUninit Union类型,它允许更安全地处理可能未初始化的数据

    1.2K30

    ubuntu快捷键设置大全

    网站链接和图片也直接拖放到桌面或者目录。可以马上 下载。 在工作区切换器。就是显示几个桌面的那个,里面那么小的软件窗口也可以。直接拖到其他桌面。...还有要使用滚动条移动页面时,鼠标的左、右、中键都有不同效果。自己试试,如右键只在凸起位置上按才有效果、在滚动条的凸出或平坦位置上按中键拖曳,效果与左键并不相同。...在主文件夹里建立一个叫Documents的文件夹,在“位置”菜单里面就会多出一个“文档”选项。...可以按Tab的的地方也可以按住Shift键,有类似的作用 左键+快捷键拖放,ctrl, alt, shift, crtl+shift nautilus中中键双击文件夹是打开在新窗口,和shift+左键同等效...5、 网站链接和图片可直接拖放到桌面或者目录,可以马上下载。 6、可在 工作区切换器 中直接将一个窗口从一个桌面拖到另一个窗口。

    1.9K30

    JavaScrtip之JS最佳实践

    一、JavaScript之平稳退化 这边使用一个当用户点击某个页面内某个链接弹出一个新窗口的案例: JavaScript使用window对象的open()方法来创建新的浏览器窗口; window.open...featrues:这个参数是以逗号分隔的一个字符串,他的内容是新窗口的各种属性,如新窗口的宽,高,以及新窗口被启用或禁用的各种浏览器的各种浏览功能(工具条、菜单条、初始显示位置等等); open()方法是使用...320像素宽、360像素高的新窗口"popup",因为我在这个函数已为新窗口命名,所以把新的url地址传给此函数时,这个函数将把新窗口的现有文档替换成新url地址处的文档,而不是去新创建一个窗口!...网页设计需要遵循"内容就是一切"的准则,所以我们应该将JS脚本放到之前这样页面(内容)就会变得更快!window对象的load事件依然可以执行对文档进行的操作。...五、脚本压缩 在写完了脚本,做了优化,而且将他放到文档中的合适位置后,还有一件事可以加快下载速度:压缩脚本文件; 所以我们开发应该至少有两个版本,一个是开发中用的包含注释的,另一个是运行用的压缩版。

    2.1K50

    前端学习自学笔记:day01

    在这里要跟大家说声抱歉,本人更太久啦.现在在自学前端,我每天会把自己的总结笔记发上来分享给大家,希望对大家有帮助....1.使用新窗口打开链接 target="_blank" HTML图像是通过标签进行定义的。...例: 这是一个例子 属性例子: 对齐标题 为标题添加背景颜色 HTML建议使用小写属性值。 HTML必须为属性值添加双引号。 HTML水平线 标签在HTML页面中创建水平线。...这么做会打开一个包含页面 HTML 代码的窗口。...HTML拆行(换行) 例: This is a para graph with line breaks 注意:当显示页面时,浏览器会重新排版,会自动忽略掉多余的空格和空行,所以 多余的空行和空格会被认为是一个空格

    77650

    Notes | Chrome 浏览器常用快捷键

    平时除了浏览网页,用 Jupyter Notebook 写一些代码也需要经常开着浏览器。 ? 我看网页还有写东西习惯全屏,竖屏看横屏写,感觉这样会更加沉浸和专注(强迫症)。...全篇共 6 部分,分别为: 标签页和窗口快捷键 Google Chrome 功能快捷键 地址栏快捷键 地址栏快捷键 网页快捷键 鼠标快捷键 快捷键 标签页和窗口快捷键 操作 快捷键 打开新窗口 Ctrl...+ n 在无痕模式下打开新窗口 Ctrl + Shift + n 打开新的标签页,并跳转到该标签页 Ctrl + t 按标签页的关闭顺序重新打开先前关闭的标签页 Ctrl + Shift + t 跳转到下一个打开的标签页...跳转到最右侧的那个标签页 Ctrl + 9 在当前标签页中打开主页 Alt + Home 打开当前标签页浏览记录中记录的上一个页面 Alt + 向左箭头键 打开当前标签页浏览记录中记录的下一个页面 Alt...Ctrl + 向左箭头键 将光标移到下一个字词起始处 Ctrl + 向右箭头键 删除文本字段中的上一个字词 Ctrl + Backspace 在当前标签页中打开主页 Alt + Home 重置页面缩放级别

    1.6K10

    VS CODE远程开发入门

    假设您在云上有一个GPU虚拟实例或物理上只有主机的计算机,可以有多种选项,如远程桌面或 Jupyter Notebook ,为您提供类似于桌面的开发体验,但是 VS CODE 远程开发扩展比 Jupyter...Notebook 灵活,比远程桌面响应速度更快。...Windows上的 OpenSSH 客户端 对于 Windows 10 用户而言,此步骤很轻松,只需在设置页面中启用一项功能,也可能它已经启用。无论如何,下面是验证此功能已启用的步骤。...在设置页面中,转到应用程序,然后单击管理可选功能,向下滚动并检查是否已安装 OpenSSH Client。 ? ? ? 设置 SSH 密钥 您不想每次登录服务器时都输入用户名和密码,对吧?...最后一步,在新窗口中,单击侧栏中的 Open Folder 以选择您的远程计算机上的文件夹路径,您可以键入 Ctrl + ` 打开远程计算机上的终端,就如同在本地一样。

    2.1K30

    Jupyter-Notebook使用技巧

    使用Latex公式 既然Jupyter notebook能够使用Markdown,那么我们可以是Jupyter Notebook中编辑LaTex公式,举一个例子:在Markdown格式下的cell中输入如下内容...当编辑栏变成蓝色:按下键盘上的A键,在上面生成一个新的单元格,如果是按下B键,则在下面生成一个新的空白单元格: ?...如果想改变目录的位置,想移动到右边,可以直接拖动: 将光标放置到这个高度,呈现出十字架,直接向右: ? 改变之后的样子:同时还可以发现右上角有了一个隐藏按钮 ?...输出多个变量 在notebook中默认只会输出最后一个变量的结果,比如下面的例子中变量a就没有输出 ?...Ctrl-Enter : 运行本单元 Alt-Enter : 运行本单元,在其下插入新单元 Shift-K : 扩大选中上方单元 Shift-J : 扩大选中下方单元 编辑模式 键盘上的Enter键会从命令模式转换回给定单元格的编辑模式

    1.4K40

    Visual Studio Code 1.67调整文件嵌套、Markdown导航

    编辑器现在支持在Markdown文件中查找头文件中的所有引用,允许开发人员查看当前工作空间中使用给定头文件的所有位置,包括来自其他Markdown文件的链接。...VS Code现在还支持查找当前文件中的所有引用链接,查找当前工作空间中给定Markdown文件的所有引用,查找当前工作空间中使用给定URL的所有位置。...此外,还可以通过将文件从资源管理器拖放到Markdown编辑器中来创建Markdown链接。...设置编辑器搜索控件在右侧添加了一个漏斗按钮,以显示可以应用到搜索查询过滤结果的过滤器列表。 Visual Studio Code for the Web现在支持新窗口打开项目。...这将选择器的行为与其他版本的VS Code保持一致,并取代了在新窗口中打开快速选择项目按钮 当使用大型存储库时,untrackedChanges设置为隐藏将体验到更好的性能。github。

    25830

    Mac下键盘使用

    Command-N 新建:打开一个新文稿或新窗口。 Command-O 打开所选项,或打开一个对话框以选择要打开的文件。 Command-P 打印当前文稿。...Shift-Command-P 页面设置:显示用于选择文稿设置的窗口。 Shift-Command-S 显示“存储为”对话框或复制当前文稿。...Command–Control–上箭头 在新窗口中打开包含当前文件夹的文件夹。 Command–下箭头 打开所选项。 Command–Mission Control 显示桌面。...移时按 Command 键 将移的项目移到其他宗卷或位置。移项目时指针会随之变化。 移时按住 Option 键 拷贝移的项目。移项目时指针会随之变化。...移时按住 Option-Command 为移的项目制作替身。移项目时指针会随之变化。 Option-点按开合三角形 打开所选文件夹内的所有文件夹。这个快捷键仅在列表视图中有效。

    2.8K130
    领券