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

在gtk中,我如何切换到一个新的屏幕,其中有新的按钮和其他小部件,但是在同一个窗口上?

在GTK中,要切换到一个新的屏幕并在同一个窗口上添加新的按钮和其他小部件,可以通过以下步骤实现:

  1. 创建一个主窗口(GtkWindow)作为容器,用于承载所有的屏幕和小部件。
  2. 创建一个主容器(GtkBox、GtkGrid等)作为主窗口的子容器,用于布局和管理不同的屏幕。
  3. 创建第一个屏幕(GtkBox、GtkGrid等)并将其添加到主容器中,用于显示初始的按钮和小部件。
  4. 创建一个按钮(GtkButton)并将其添加到第一个屏幕中,用于切换到新的屏幕。
  5. 为按钮连接一个回调函数,当按钮被点击时触发切换屏幕的操作。
  6. 在回调函数中,先移除当前屏幕(gtk_container_remove)。
  7. 创建一个新的屏幕(GtkBox、GtkGrid等)并将其添加到主容器中。
  8. 创建新的按钮和其他小部件,并将它们添加到新的屏幕中。
  9. 更新主窗口的布局(gtk_widget_show_all)以确保新的屏幕和小部件可见。

以下是一个示例代码,演示了如何在GTK中切换到一个新的屏幕并添加新的按钮和其他小部件:

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

def switch_screen(button):
    # 移除当前屏幕
    main_container.remove(current_screen)

    # 创建新的屏幕
    new_screen = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=10)
    main_container.pack_start(new_screen, True, True, 0)

    # 创建新的按钮和其他小部件
    new_button = Gtk.Button(label="新按钮")
    new_screen.pack_start(new_button, False, False, 0)

    # 更新主窗口的布局
    window.show_all()

# 创建主窗口
window = Gtk.Window(title="GTK切换屏幕示例")
window.connect("destroy", Gtk.main_quit)

# 创建主容器
main_container = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=10)
window.add(main_container)

# 创建第一个屏幕
first_screen = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=10)
main_container.pack_start(first_screen, True, True, 0)

# 创建切换按钮
switch_button = Gtk.Button(label="切换屏幕")
switch_button.connect("clicked", switch_screen)
first_screen.pack_start(switch_button, False, False, 0)

# 创建其他小部件
label = Gtk.Label(label="其他小部件")
first_screen.pack_start(label, False, False, 0)

# 更新主窗口的布局
window.show_all()

Gtk.main()

在这个示例中,初始屏幕包含一个切换按钮和一个标签,点击按钮后会切换到一个新的屏幕,新屏幕包含一个新按钮和一个标签。你可以根据需要自定义新屏幕的布局和添加更多的小部件。

请注意,这只是一个简单的示例,实际应用中可能需要更复杂的布局和逻辑。此外,示例中使用的是Python语言和GTK 3版本,你可以根据自己的需求选择其他编程语言和相应的GTK版本进行开发。

希望这个示例能帮助你理解如何在GTK中切换到一个新的屏幕并添加新的按钮和其他小部件。

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

相关·内容

树莓派进入Bullseye版本!完全兼容Linux,视频驱动全开源

首先是所有的桌面组件应用都切换为GTK+3。 GTK+是一个软件层,应用程序可以用它来绘制标准用户界面组件Widget,如按钮、菜单等,以便所有应用程序都有一致外观视觉感受。...GTK+3实际上已经平稳运行了好几年了,经常有用户对树莓派为什么以前不切换到GTK+3,官方给出答案是:使用GTK+2比使用GTK+3做很多事情要容易得多,尤其是定制小部件外观时,GTK+3删除了一些之前依赖几个特性...另一个更新部分是通知系统(Notification),开发人员Taskbar添加了一个常见通知管理器,插件其他应用程序都可以访问通知系统。...以往更新需要在命令行中使用apt,新版本系统,树莓派开发了一个对用户更友好图形界面,可以屏幕顶部任务栏提供可用插件。...至于如何安装新系统,官方建议下载映像后,重新安装任何应用程序,并将数据从当前系统内备份到其他位置。

1.5K40

如何在Linux桌面下使用PyGObject创建GUI应用程序

Linux创建GUI应用程序 - 第1部分 今天,我们要开始了一系列关于创建GUI(图形用户界面)使用GTK +库PyGobject语言Linux桌面应用下,该系列将包括以下内容: 第1部分 :如何创建...:我们创建了一个Gtk.Button,我们把它称为“Button1”,该按钮默认文本为“你好,世界!”,你可以创建任意Gtk部件如果你想。...没有在这里解释了。 窗口= ourwindow():我们要创建一个全局变量并将其设置为ourwindow()类,这样我们就可以以后使用GTK +库调用它。...,运行: # yum install glade 您下载并安装该程序,并运行后,你会看到左边可用GTK构件,以创建一个窗口,单击“ 窗口 ”,窗口小部件。...创建窗口小部件 你会注意到一个空窗口被创建。 新窗口小部件 现在,您可以将某些小部件添加到它,左边工具栏上,单击“ 按钮 ”控件,并以该按钮添加到窗口中单击空口上

3.8K30
  • 用wxPython打造Python图形界面(上)

    图形用户界面是一个具有按钮、窗口许多其他部件应用程序,用户可以使用这些小部件与应用程序进行交互。web浏览器就是一个很好例子。它有按钮、选项卡一个主窗口,所有内容都在其中加载。...这是一个很好应用程序,演示了wxPython包含绝大多数小部件。演示允许开发人员一个选项卡查看代码,并在第二个选项卡运行代码。...wxPython还支持许多其他常见部件自定义小部件。开发人员将获取这些小部件,并将它们逻辑地排列一个口上,以便用户与之交互。 事件循环 图形用户界面的工作原理是等待用户做一些事情。...本例,你希望文本控件按钮位于面板顶部,因此它是你指定父控件。 你还需要告诉wxPython将小部件放置何处,这可以通过pos参数传入一个位置来实现。...然后将按钮添加到面板并给它一个标签。为了防止小部件重叠,需要将按钮位置y坐标设置为55。 好,今天这一篇先更新到这里,把这个过程分成三篇文章接下来两天里陆续更新,明天见~ ? End

    4.9K40

    悬浮开发设计实践

    市面上常见悬浮,如微信视频通话功能,有如下特点:整屏页面能切换到一个悬浮;悬浮能运行在其他app上方;悬浮能跳回整屏页面,并且悬浮消失需求悬浮效果点击缩小按钮,将当前远端视屏加载进悬浮...,且悬浮可拖拽,不影响其他界面焦点;点击悬浮可返回原来Activity1.2 遇到问题什么是悬浮全局悬浮许多应用中都能见到,点击Home键,小窗口仍然会在屏幕上显示。...针对悬浮展示移除,则可以模仿ToastaddViewremoveView操作……视频通话Activity如何最小化Activity本身自带了一个moveTaskToBack(boolean nonRoot...展示悬浮能否想Popup那样依附在某控件位置写悬浮库时,思考能否想Popup那种有showAsDropDown方法Api,可以显示某个View重心位置,然后设置xy偏移量。...而Android 8.0对系统API行为做了修改,包括使用SYSTEM_ALERT_WINDOW权限应用无法再使用一下窗口类型来在其他应用口上方显示提醒窗口:如果需要实现在其他应用口上方显示提醒窗口

    2.4K40

    Ubuntu 17.10 已经发布,图解新功能

    如果你之前一直使用Gnome-shell这个布局一定很熟悉。顶部面板,侧面Dock,顶部中央日历程序/消息托盘,顶部右边应用程序指示以及用于管理网络、音量、蓝牙用户会话。...没有一个真正全局应用程序菜单,大多数应用程序顶部一个小菜单中放置了一个关于应用程序名称小菜单。这些应用程序菜单至少可以包含一个单独“退出”按钮,最多可以选择最多选项。...将突出显示打开窗口。将鼠标悬停在窗口上以查看窗口标题,并显示快速关闭按钮,或单击缩略图以转到该应用程序。 该活动 屏幕将显示所有正在运行应用程序窗口,甚至是最小化。...Wayland是默认显示服务器 另一个主要变化,Ubuntu 17.10使用Wayland作为其默认显示服务器,用于安装升级。...“你不会注意到使用Wayland任何重大差异,从传统Xorg显示服务器切换到Wayland是一个巨大变化,但是在使用Wayland时,您不会注意到任何主要区别。

    1.8K90

    带有桌面推荐软件 Raspberry Pi OS免费下载

    xrandr 管理,可以为两个显示器独立设置,并且即时生效而不需要重新启动 * GTK3 开关控制现在用于代替成对单选按钮 * piwiz - 首次启动向导现在作为具有不同图形不同用户单独会话运行...GTK+3 主题更新了许多更改以支持上述内容 * GTK+3 : 添加工具栏图标大小设置 * GTK+3:增加了在窗口上请求客户端装饰能力 * GTK+3 : 添加自定义样式框架标签缩进设置...* piclone:移除应用程序在其他桌面的隐藏 *不可知论者:删除应用程序在其他桌面隐藏 * rp-书架: - 删除应用程序在其他桌面的隐藏 - GTK+3 版本...* 删除菜单按钮左侧填充 * 焦点行为发生变化,如果没有打开任何窗口,焦点会移至桌面 - 提高 Orca 屏幕阅读器可靠性 * 错误修复 - 音量插件焦点错误 * 错误修复 -...* Code The Classics Python 游戏添加到推荐软件 * 文件管理器 - 侧边栏顶部添加了“位置”格,以简化视图显示已安装驱动器;“新文件夹”图标添加到任务栏;目录浏览器扩展器现在可以正确显示子文件夹状态

    2.1K20

    OpenCV3 Qt5 计算机视觉:1~5

    如下面的屏幕截图所示,将鼠标光标停留在“设计模式”按钮上,它确实告诉了按钮用途(即切换到设计模式)键盘快捷键,即Ctrl + 3: [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传...使用第一个列表第二个列表单击任何项​​目类型后(在下面的屏幕截图中),它们描述将出现在第三个。...您可以使用 Qt Creator 屏幕左侧“设计”按钮换到“设计”模式。...每当在 Qt 创建一个主窗口时,这三种类型条形都将添加到该窗口中。 请注意,一个口上只能有一个菜单栏一个状态栏,但是可以有任意数量状态栏。...现在,根据前面的图像,更改窗口上所有小部件文本。 您 UI 即将准备就绪。 现在,您可以通过单击屏幕左下方“运行”按钮来尝试运行它。 确保您没有按下带有错误“运行”按钮

    5.9K20

    Flutter常见开发问题

    Android View 主要是布局一个元素,但在 Flutter ,Widget 几乎就是一。从按钮到布局结构都是小部件。这里优势在于可定制性。...想象一下 Android 一个按钮。它具有文本等属性,可让您向按钮添加文本。但是 Flutter 按钮不是将标题作为字符串,而是另一个部件。...package允许您将部件或功能导入您应用程序。package插件之间有一个区别。包通常是纯粹用 Dart 编写组件或代码,而插件则可以使用本机代码设备端提供更多功能。...setState() 本质上是一种告诉应用程序使用值刷新和重建屏幕方法。 什么是有状态无状态小部件? TL;DR:允许您刷新屏幕部件是有状态小部件。没有状态部件是无状态。...包含静态内容屏幕或小部件应该是无状态小部件,但要更改内容,需要有状态。 你如何处理 Flutter 代码缩进结构?

    6.7K20

    Flutter常见开发问题

    按钮到布局结构都是小部件。这里优势在于可定制性。想象一下 Android 一个按钮。它具有文本等属性,可让您向按钮添加文本。...但是 Flutter 按钮不是将标题作为字符串,而是另一个部件。这意味着**在按钮内你可以有文本、图像、图标几乎任何你可以想象东西,**而不会打破布局限制。...package允许您将部件或功能导入您应用程序。package插件之间有一个区别。包通常是纯粹用 Dart 编写组件或代码,而插件则可以使用本机代码设备端提供更多功能。...setState() 本质上是一种告诉应用程序使用值刷新和重建屏幕方法。 什么是有状态无状态小部件? TL;DR:允许您刷新屏幕部件是有状态小部件。没有状态部件是无状态。...包含静态内容屏幕或小部件应该是无状态小部件,但要更改内容,需要有状态。 你如何处理 Flutter 代码缩进结构?

    6.8K30

    使用 Linux 自动化工具提高生产率

    你可能希望熟悉 UI 时将他们留作备用,但是可以根据需要删除它们。 image.png AutoKey 用户界面 左侧格包含一个文件夹式短语脚本层次结构。...例如,始终键入 “gerp” 来代替 “grep”。这里是如何配置 AutoKey 为你解决这些类型问题。 创建一个子文件夹,可以在其中将所有“打字排版错误校正”配置分组。... “ 文件 -> 新建 -> 短语(File -> New -> Phrase)” 创建一个短语。并将其称为 “grep”。...弹出对话框,单击 “ 添加(Add)” 按钮,然后将 “gerp” 添加为缩写。...例如,浏览器,集成开发环境终端输入一个常见打字错误 “openshfit” 替代为 “openshift”。别名不能完全解决此问题,而 AutoKey 可以在任何情况下纠正它。

    2.1K30

    微信8.0.0来了!新增爆炸等表情特效

    苹果商店于1月21日 更新了微信最新 8.0.0 版本, 增加了以下新功能: 新形态表情、浮、状态 以及其他功能。...其中有三个表情使用时会呈现全屏动态效果: “炸弹”、“庆祝”“烟花”, 点击发送后, 屏幕发生下图效果。...设置后, 状态会展示个人页面内, 不同状态, 呈现不同主题色。 当然也可以选择结束更换状态。 设置过“状态”微信好友, 只有升级到8.0.0用户才能 看到好友设置”状态“。...”浮“位置变了 “浮”功能从界面的右下角 迁移到首页界面的左上角,按钮图标为“..”。 点击左上角按钮之后, 会打开浮页面, 下图为浮页面样式。...新增“快速找回看过内容”功能 新版微信对阅读做了更人性体验, 即在阅读文章、直播、视频中途, 如果未点击“浮”就退出了之后, “聊天”界面下滑, 程序栏下方会看到你未阅读完文章 或者未观看完直播视频

    2.8K10

    微信8.0内测版本来了!!

    动态表情 发送炸弹,会爆炸,手机还会震动,发送烟花,会在屏幕上放烟花.这感觉像回到了QQ ? 更新表情 表情也是可以动了哦! ?...浮升级 浮功能带来一波大升级 浮其实挺不喜欢,它特别像一个狗皮膏药,占了你屏幕一个位置。...很多朋友看文章看不完,一边处理消息一边看,不是很好解决方案,新版本你不用去占屏幕,可以非常快速回你想要看文章里面去。...再比如直播时候,退出来了这个直播就找不到了,我们也做了一个优化,把微信拉下来,里面有最近用过程序,最近看过文章没有看完,直播没有结束,视频没有看完,可以很快找回它们。 ?...个人状态 微信「」页面,点击个人头像下面的「+状态」按钮 ? 点击可以查询同状态好友列表,并且可以进行点赞操作 ?

    86910

    苹果 macOS13 Ventura 新功能台前调度如何使用

    发布了全新MacBook AirMacBook Pro 13后,苹果紧接着WWDC 2022上推出了针对于Mac系列产品macOS Ventura系统更新。...macOS Ventura首先一个非常值得关注内容就是台前调度功能加入,这一个功能可以自动整理打开所有 App 窗口,让用户保持专注。...用户目前使用内容会被显示屏幕中心,其他打开窗口则会在屏幕左边显示,便于用户快捷切换不同任务,而在有多个任务为同一个应用所打开时,用户可以通过点选来切换到不同内容。...苹果 macOS13 Ventura 新功能台前调度如何使用从控制中心启动台前调度你会看到自动把电脑所有的窗口都排列屏幕一边而台前调度把正在使用app,放在了屏幕最前方中间位置当你点开APP...,最上面的窗口就会打开如果想打开别的窗口,可以通过点击来让窗口循环还可以同时打开多个APP,让窗口重叠只需要把左边你想要APP,拖到中间就可以了还有个更厉害功能,如果你经常访问桌面上文件,有了台前调度这一就变得都比之前更容易了

    3.4K40

    一个创建产品动画说明视频新手指南

    不会涉及如何概念化脚本化您视频,或如何添加配音或音乐。这些元素显然很重要,但今天我们不在这里谈论。各位请注意! 我们将使用一个虚构Slack风格产品(我们称之为Quack)为本教程。...4.关键帧变换(Keyframes and Transforms) 现在,我们将使我们视频每个元素屏幕上渐隐。我们将为每个层创建一个关键帧,影响不透明度并将其从0%转换到100%。...我们希望它在左上角,所以时间轴面板上光标层上点击“转换”卷展栏(我们之前使用箭头)。 Anchor Point(“ 锚点”)属性,将这两个值更改为零(这些表示相对于图层xy坐标)。...现在,您可以时间轴复制并粘贴图层,并将每个图层缩小到位置,以显示多个窗口。(专业提示:使用键盘上JK图层上关键帧之间向前向后跳过。)...导入logo.psd,你早就学会了如何做,并把它放到我们composition。将其拖出屏幕,并在其他元素离开屏幕时间轴某处创建位置关键帧。

    3K10

    [ISUX譯]Touch bar 設計指南

    導語:日前蘋果發布會上,最大亮點之一當屬替代一欄功能鍵Touch bar。本文包括有5個節,詳細介紹了Touch bar設計原則、特性基本元素 ,一起來學習。...應用程序區分不同場景,並根據應用程序實際使用情況,思考如何曝光不同層級功能。 將Touch Bar看作鍵盤觸控板延伸,而非顯示器。...全屏模式下,工具欄其他控件通常是隱藏,只有在用戶調用它們時才顯示,比如將指針移動到屏幕頂部。...摺疊狀態彈出視窗上表明選項。彈出視展開時包含了一組選項,摺疊狀態下則應該示意當前選項。 提供明確退出路徑。確保用戶知道如何收起一個彈出視,並回到之前一組控件。...4.9 分段控件(Segmented Controls) 分段控件是由包含了兩個或以上線性關係部件所組成,每個部件作用就像是按鈕——通常會配置為換鍵。這個控件,所有部件等寬。

    86620

    【QT】Widget 控件核心属性

    statusTip Widget 状态发⽣改变时显⽰提⽰信息(⽐如按钮被按下等). whatsThis ⿏标悬停并按下 alt+F1 时, 显⽰帮助信息(显⽰⼀个弹出)....acceptDrops 该部件是否接受拖放操作。如果设置为true,那么该部件就可以接收来⾃其他部件拖放操作。当⼀个部件被拖放到该部件上时,该部件会接收到相应拖放事件(如dropEvent)。...包含最⼤宽度最⼤⾼度. sizePolicy 尺⼨策略. 设置控件布局管理器缩放⽅式. windowModality 指定⼝是否具有 “模态” ⾏为....Qt::GlobalAtomics:部件布局⽅向由全局原⼦性决定(PS 这个翻译其实有点尴尬. 其实就是根据应⽤程序其他 widget 布局⽅向确定)....其实是四个属性统称: x 横坐标 y 纵坐标 width 宽度 height ⾼度 代码⽰例: 控制按钮位置 界⾯拖五个按钮.

    8910

    最新iOS设计规范九|10大系统能力(System Capabilities)

    当人们可以直接触摸屏幕3D对象而不是使用屏幕空间中间接控件来与之交互时,它具有更加身临其境直观感觉。但是在人们使用您应用程序时四处走动情况下,间接控件可以更好地工作。 ?...处理中断 中断期间,例如人们短暂切换到一个应用程序或接听电话时,ARKit无法跟踪设备位置方向。中断结束后,先前放置虚拟对象可能会出现在错误实际位置。...某些功能(例如进行电话,录音网络共享)会在屏幕顶部显示一个附加状态栏。未经准备应用,此增加高度可能会由于遮盖或压下其他界面元素而导致布局问题。...细看小部件 您可以创建或大尺寸部件iPhone,iPadMac上,人们可以在窗口小部件库中找到窗口小部件,还可以在其中选择窗口小部件大小。...较大部件,您可以显示更多数据-或数据更详细可视化效果-但始终专注于小部件想法至关重要。 例如,“天气”小部件仅显示当前温度天气状况,以及该位置当天高温和低温值。 ?

    4.3K20

    JS前端开发框架常用有哪些?

    自带了13个jQuery插件,其中有模式对话框、标签页、滚动条弹出框等。 3、Curl Curl是一个命令行工具,用于通过HTTP(s)、FTP和数十种其它协议进行请求。...Tmux允许用户终端程序之间切换,添加屏幕格,并将多个终端连接到同一个会话,使其保持同步。远程服务器上工作时,Tmux特别有用,因为它允许用户创建选项卡,而无需再次登录。...在前端领域混了这几年,总结了一套前端学习精讲视频学习路线,如果有对前端开发感兴趣伙伴,不管你是想转行,或是大学生,还有工作想提升自己能力web前端党,欢迎大家加入前端开发交流群:603985993...也可以关注微信公众号:【前端留学生】 每天更新最新技术文章干货。 7、AUI AUI专为APIClound设计一套框架,解决了许多移动端开发实际遇到许多问题是一个纯CSS框架。...包括按钮、列表、表单、通知、提示条、弹出框、选项卡等等常用组件。还包括一个FrozenJsJS组件库。可以主流AndroidIOS上应用。基本样式使用离线包方式减少请求提供快速接入方案。

    3.6K20

    Wijmo 更优美的jQuery UI部件集:通过jsFiddle测试Wijmo Gauges

    事实上,我们可以用它来实时测试一些wijmo部件,这里我们会看到如何做到这一点。...现在,单击顶部运行按钮,你会看到一个非常基本仪表出现在结果! ? 第四步:变得更花哨! 酷!我们现在可以快速测试这个仪表不同样式属性。...第五步:手机测试 因为所有这一都是浏览器内部代码图形渲染得支持下完成,你可以iPad或者其他移动设备上运行jsFiddle。...下面的截图就是iPad上运行结果: 不错,机场候机时间变得更有成效! ? 第六步:制作一个真正应用程序 因为这只是纯粹客户端代码,仪表值可以简单通过向其提供一个值改变。...创建了一个简单HTML页面以演示这样如何工作: Download Wijgauge HTML sample。你可以直接在浏览器或者在任何你喜欢HTML编辑器打开这个文件 。

    99480

    软件测试|超好用超简单Python GUI库——tkinter(二)

    前言Tkinter,主窗口控件(window)是一控件基础,它好比是一台高速运转机器,而其他控件则相当于这台机器上部件,比如齿轮、链条、螺丝等等。...no.1')#将文本内容放置主窗口内text.pack()# 添加按钮,以及按钮文本,并通过command 参数设置关闭窗口功能button=tk.Button(window,text="关闭"...设置位置当我们运行 Tkinter 程序时,主窗口都会出现在距离屏幕左上角指定位置上,这是由 Tkinter 软件包默认设置。...但是在许多情况下,我们需要根据实际情况来移动窗口电脑屏幕位置,这时应该如何处理呢?...+-2000')当设置了一个超过屏幕负参数值时,主窗口会被移动至“屏幕之外”,此时就看不到主窗口了,这也是隐藏窗口一种方法。

    2.6K30
    领券