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

如何在GTK +中为GtkToggleButton设置组(就像GtkRadioButton那样)?

在GTK+中,要为GtkToggleButton设置组,可以使用GtkToggleButton的group属性。GtkToggleButton的group属性允许您将多个GtkToggleButton放入一个组中,这样当一个GtkToggleButton被激活时,同组的其他GtkToggleButton将被取消激活。这与GtkRadioButton的行为相似。

以下是一个简单的示例,说明如何在GTK+中为GtkToggleButton设置组:

代码语言:c
复制
#include <gtk/gtk.h>

int main(int argc, char *argv[]) {
    GtkWidget *window;
    GtkWidget *box;
    GtkWidget *toggle_button1;
    GtkWidget *toggle_button2;
    GtkWidget *toggle_button3;

    gtk_init(&argc, &argv);

    window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    gtk_window_set_title(GTK_WINDOW(window), "Toggle Button Group");
    gtk_window_set_default_size(GTK_WINDOW(window), 300, 100);
    g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL);

    box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 5);
    gtk_container_add(GTK_CONTAINER(window), box);

    toggle_button1 = gtk_toggle_button_new_with_label("Button 1");
    gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toggle_button1), TRUE);
    gtk_box_pack_start(GTK_BOX(box), toggle_button1, TRUE, TRUE, 0);

    toggle_button2 = gtk_toggle_button_new_with_label("Button 2");
    gtk_box_pack_start(GTK_BOX(box), toggle_button2, TRUE, TRUE, 0);

    toggle_button3 = gtk_toggle_button_new_with_label("Button 3");
    gtk_box_pack_start(GTK_BOX(box), toggle_button3, TRUE, TRUE, 0);

    // 将toggle_button2添加到toggle_button1的组中
    gtk_toggle_button_set_group(GTK_TOGGLE_BUTTON(toggle_button2), gtk_toggle_button_get_group(GTK_TOGGLE_BUTTON(toggle_button1)));

    // 将toggle_button3添加到toggle_button1的组中
    gtk_toggle_button_set_group(GTK_TOGGLE_BUTTON(toggle_button3), gtk_toggle_button_get_group(GTK_TOGGLE_BUTTON(toggle_button1)));

    gtk_widget_show_all(window);
    gtk_main();

    return 0;
}

在这个示例中,我们创建了一个包含三个GtkToggleButton的GTK+窗口。我们将toggle_button2和toggle_button3添加到toggle_button1的组中,这样当其中一个按钮被激活时,其他按钮将被取消激活。

要编译和运行此示例,您需要安装GTK+ 3开发库,并使用以下命令编译代码:

代码语言:txt
复制
gcc `pkg-config --cflags --libs gtk+-3.0` -o toggle_button_group toggle_button_group.c

然后运行生成的可执行文件:

代码语言:txt
复制
./toggle_button_group

这将显示一个窗口,其中包含三个GtkToggleButton,这些按钮以组的形式工作。

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

相关·内容

何在C语言中进行图形界面编程

16如何在C语言中进行图形界面编程接下来,我们将介绍如何在C语言中使用GTK来创建图形界面。首先,我们需要安装GTK开发包。在Linux系统上,我们可以使用包管理器来安装。...在Windows系统上,我们可以从GTK官方网站下载安装包。安装完毕后,我们需要在代码引入GTK的头文件,使用gcc编译器来编译我们的程序。...gtk_widget_show(window);gtk_main();return 0;}在这个例子,我们首先引入了GTK的头文件,然后在`main`函数调用了`gtk_init`函数来初始化...接下来,我们使用`gtk_window_new`函数创建了一个顶级窗口,并使用`gtk_window_set_title`函数设置了窗口的标题为\Hello World\。...虽然C语言没有像Java或C++那样的丰富的图形库,但我们仍然可以使用GTK等库来实现简单的图形界面。总结一下,通过使用GTK等库,我们可以在C语言中进行图形界面编程。

86900

gtk还有人用吗_iperf使用方法

已经 GTK+ 编写了成百上千的应用程序,而且至少有两个主要的桌面环境(Xfce 和 GNOME)用 GTK+ 用户提供完整的工作环境。...GTK+虽然是用C语言写的,但是您可以使用你熟悉的语言来使用GTK+,因为GTK+已经被绑定到几乎所有流行的语言上,:C++,PHP, Guile,Perl, Python, TOM, Ada95,.../download/index.php 1、GTK特点 现代化、更新快:GTK+ 是采用软件开发的最新技术开发的,只要发现缺陷(BUG)(肯定有缺陷,因为没有任何软件是完美的),开发人员就会尽力在下一版本修补缺陷...例如,可以编写自己的控制元素,比如说用于显示应用程序处理的科学数据,并让它正确地遵照用户选择的显示风格,就像 GTK+ 自身的控件那样。...发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

1.2K20
  • dotnet 在 UOS 国产系统上使用 Xamarin Forms 创建 xaml 界面的 GTK 应用

    本文告诉大家如何在 UOS 国产系统上,通过 Xamarin.Forms 使用 XAML 写界面逻辑,构建出 GTK 应用 本文将使用特别底层的方法告诉大家如何一步步创建,而不是告诉大家如何在 IDE...全平台带界面应用 dotnet 在 UOS 国产系统上使用 MonoDevelop 进行拖控件开发 GTK 应用 dotnet 在 UOS 国产系统上使用 MonoDevelop 创建 GTK 全平台带界面应用...修改 csproj 文件下面内容 netstandard2.0...Xamarin.Forms 项目之后,再拷贝到 UOS 上,也是可以的,但是有一点需要注意的是不能拷贝 bin 和 obj 文件夹过去,原因是在 obj 文件夹存放了很多依赖本机电脑的文件夹绝对路径的文件,...MainPage = new MainPage(); } } } 上面代码的核心就是在构造方法调用 InitializeComponent 方法,然后设置主页面

    2.6K10

    WiFi安全与攻击案例分析

    这是AP自己生成的,GMK用来每个连接的STA生成GTK,并分享给STA。...为了避免GMK被STA猜解,有的AP可以设置定时更换GMK,思科的设备broadcast key rotation选项。...m3 发送的GTK是最初从GMK生成而来的,主要用来加密播和广播数据(实现上切分为GEK/GIK,在CCMP和TKIP作为不同字段使用)。...当然这里说的暴力破解不是输密码连WiFi,提示密码错误了再不断尝试,那样效率太低了。 实际的暴力破解要高效得多。...在更新的版本,除了响应直接探测,还响应广播探测。 这一类伪AP的根本问题是802.11协议没有清楚地定义客户端如何选择ESS以及如何在不同的ESS之间漫游,所以实现上就存在各种偏差。

    1.7K20

    ​monosys as 1ddlang语言选型+1ddcodebase实践选型绿色monodevelope集成常见多语言

    net支持多种常见语言,如果将它独立出来,很容易得到一种“langone”发布包,如题目所指的那样,可以作为1ddlang,1ddcodebase的一种明确的参考实现。...而mono作为.net的变体,与.net生态不同的是,它最适合拿来定制和集成,且与.net高度兼容,且有monodevelop,xsp这样的完善工具生态支持,其多种语言ironpy,ironruby实现都在...就像msyscuione/mingwsys/opt下的一堆语言一样。mingwsys的全是本地语言cpy,zend cphp。...,官网能下载的mono历史版本名字gtk指明的是使用的gtk版本,你还得另外安装那个版本的gtk来支持xamarin的运行。...gtk-sharp 2.12.25 最新绿化方法(网上的过时): 我是放到d:|monodev|GtkSharp|2.12测试的,注意以上有||的地方千W不要少了一个|。

    67710

    在 Fedora 34 及以上版本安装 Shutter

    不幸的是,由于各种依赖性问题,特别是它的设计方式,多年来,Linux 发行版, Ubuntu、Fedora,都面临着将这个应用打包到官方仓库的问题。 主要问题是它仍然基于 GTK2 和 Perl。...当大多数应用转移到 GTK3 时,它仍然是 GTK2。这就造成了一个依赖性问题,因为 Debian/Ubuntu、Fedora 删除了某些包的依赖的 GTK2 版本。...在 Fedora 34 及以上版本安装 Shutter 截图工具需要采用另一种方法。 现在,你只能通过个人包存档(PPA)来安装这个工具。下面是如何在 Fedora 34 及以上版本安装它。...Shutter in Fedora 在 Fedora 34 及以上版本安装 Shutter 在你的 Fedora 打开一个终端,启用以下 Shutter 的 copr 仓库。...这个包存档 Fedora 的 Shutter 提供了一个单独的构建,其中包含了所有未满足的依赖项。

    57640

    在 Fedora 34 及以上版本安装 Shutter

    不幸的是,由于各种依赖性问题,特别是它的设计方式,多年来,Linux 发行版, Ubuntu、Fedora,都面临着将这个应用打包到官方仓库的问题。 主要问题是它仍然基于 GTK2 和 Perl。...当大多数应用转移到 GTK3 时,它仍然是 GTK2。这就造成了一个依赖性问题,因为 Debian/Ubuntu、Fedora 删除了某些包的依赖的 GTK2 版本。...在 Fedora 34 及以上版本安装 Shutter 截图工具需要采用另一种方法。 现在,你只能通过个人包存档(PPA)来安装这个工具。下面是如何在 Fedora 34 及以上版本安装它。...Shutter in Fedora 在 Fedora 34 及以上版本安装 Shutter 在你的 Fedora 打开一个终端,启用以下 Shutter 的 copr 仓库。...这个包存档 Fedora 的 Shutter 提供了一个单独的构建,其中包含了所有未满足的依赖项。

    51230

    让VIM支持Python2 by update-alternatives

    前言  Ubuntu 16+$ sudo apt install vim所安装的vim只支持Python3,但很多插件YCM和powerline均需要Python2,那就来场“生命贵在折腾”吧!...八一八update-alternatives  在Debian系统(含Ubuntu)我们可能会安装很多功能相似的程序,emacs和vim,甚至同一个程序安装多个版本,vim-nox和vim-nox-py2...,甚至一次性将java和javac从指向1.4切换为指向1.8,而不是到/usr/bin/逐个符号链接修改那么蛋碎。...usr/bin/vim.nox-py2 /etc/alternative/vim $ ln -s /etc/alternative/vim /usr/bin/vim 命令API 1.查看命令符号链接信息...remove-all 6.切换模式, update-alternatives --auto 而当通过update-alternatives --config 设置默认目标后

    1.1K80

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

    类ourwindow(Gtk.Window):这里我们创建一个新类,称为“ourwindow”,我们也将类对象类型设置Gtk.Window”。...Gtk.Window.set_position(个体经营,Gtk.WindowPosition.CENTER):使用这条线,我们就可以设置默认位置窗口,在这种情况下,我们把它设置使用“Gtk.WindowPosition...窗口= ourwindow():我们要创建一个新的全局变量并将其设置ourwindow()类,这样我们就可以在以后使用GTK +库调用它。...添加小部件 你会发现,按键ID“Button1的 ”,现在指的是信号标签右侧工具栏,并搜索“ 点击 ”信号,并在其下输入“button1_clicked”。...:我们用“set.label”的方法默认按钮文本设置“你好,世界!”的句子。

    3.7K30

    编译原理基础

    它的目标是提供一个GNU编译器套装(GCC)的替代品,支持了GNU编译器大多数的编译设置以及非官方语言的扩展。...对于 C 语言之外的语言,MinGW 使用标准的 GNU 运行库, C++ 使用 GNU libstdc++。但是 MinGW 使用 Windows 的C运行库。...GTK 是什么 GTK(原名GTK+)最初是 GIMP 的专用开发库(GIMP Toolkit),后来发展 Unix-like 系统 (类 Unix 系统)下开发图形界面的应用程序的主流开发工具之一。...使用 GTK 的环境有 GNOME 等,GNOME 是以 GTK 基础,就是说 GNOME 编写的程序使用 GTK 做为其工具箱。...GNU 该系统的基本组成包括 GNU编译器套装(GCC)、GNU的C库( glibc)、以及 GNU核心工具(coreutils)[14],另外也是GNU调试器(GDB)、GNU 二进制实用程序(binutils

    87310

    Linux上你的任务创建一个自定义的系统托盘指示器

    你需要安装 这个扩展 (或者其他扩展)来桌面启用该功能。否则你无法看到我们创建的指示器。 基础代码 下面是该指示器的基础代码: #!...indicator.set_menu(menu()) :这里说的是我们想使用 menu() 函数(我们会在后面定义) 来我们的指示器创建菜单项。...gtk.main() :运行 GTK 主循环。 在 menu() 我们定义了想要指示器提供的行为或项目。...然后定义新函数,就像 play(_) 函数那样。 可能性是无穷的;比如我用这种方法来从网上获取数据(使用 urllib2 库)并显示出来。...总结 以上所述是小编给大家介绍的Linux上你的任务创建一个自定义的系统托盘指示器,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。

    1.9K41

    Archlinux安装之后应该......

    创建用户并授权 # -m 是其创建家目录,-G 指定 所属 useradd -m -G wheel arch # 设置密码 passwd arch # 赋予权限 ln -s /bin/vim /bin...设置开机自动启动,以sddm例: systemctl enable sddm 如果是别的请将这里的sdddm替换为你安装的那个 中文和输入法 安装中文字体 这一步不装进去图形界面之后还是要装:更纱黑体...安装输入法 Fcitx5 官方文档 pacman -S fcitx5-im #基础包pacman -S fcitx5-chinese-addons #官方中文输入引擎pacman -S fcitx5-...=@im=fcitxSDL_IM_MODULE=fcitx 打开 系统设置 > 区域设置 > 输入法,先点击运行Fcitx即可,拼音默认添加项。...如你还需要更多输入法五笔,则再点击添加输入法,找到简体中文下的五笔 ,点击添加即可加入五笔输入法。

    1.6K20

    揭开Wayland的面纱(一):X Window的前生今世

    在本篇,我将回顾历史,展望未来,通过简易的文字,来先回顾一下X Window,从而继续解答Wayland。...因为当前的Linux桌面早已经不是10年前的那样了,现在是"Composite"即合成桌面的时代,合成桌面的一个特点便是:Compositor(Compiz)管理窗口的一切,X Server只能知道屏幕的某个点收到了鼠标消息...当然,这里我没有直接说明这种模式有没有给X Window造成效率问题,因为我们还少一个对照。...同理,跨平台的GTK+、Qt也只是视X其中所支持的后端之一,假如哪天X真的不在了,更换一个新后端,当前的GNOME、KDE也能完整的跑起来。...尽管后来Linux也支持了各种用户层(user- space)的模式设置,让终端也支持标准的分辨率,但是X的模式设置与此是不相干的,所以一两年前,在Linux的启动过程,从终端进入图形界面时,屏幕会"

    4.6K80

    Arch Linux的正确使用方法

    我这次怀着犹豫的心情去安装了,安装过程不像 Ubuntu 那样顺利,记得应该遇到过一点问题,但还是解决了。这次的 Debian 安装让我很满意,我的电脑像复活了一样,再也不会卡顿了。...答:以前net-tools属于base,装base时自动就装上了,现在哪个都不属于了,这些工具需要单独安装。...与 qt 程序获得良好的输入体验(例如光标跟随与显示预编辑字符串)并避免一些 xim 无法解决的 bug, 请根据需要安装对应的输入法模块: fcitx-gtk2, fcitx-gtk3, fcitx-qt4...字幕文件编码gbk,则subcp=cp936;字幕文件编码utf-8,则subcp=utf8。如果字幕文件编码utf-8,而设置成subcp=cp936,则会出现部分乱码的情况。...另一种更为简单的方法是设置成subcp=enca:zh:ucs-2,由enca负责字幕的编码显示问题。

    5.6K70

    终端terminal个性化配置

    打开终端快捷键: ctrl + alt + t 新窗口中打开 ctrl + shift +t 新标签页打开 个人配置文件介绍 系统默认状态下的终端显示紫底白字(皮皮的linuxubuntu 14.04...这些文件的的作用时机 /etc/profile:此文件系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行.并从/etc/profile.d目录的配置文件搜集shell的设置.此文件默认调用...明白了对PS1变量进行设置的原理之后,可以在PS1变量插入字符串,或者每个信息项设置不同的颜色,或者控制信息栏显示的内容: 让用户名(红色)、路径(绿色)、美元符号(黄色)、命令(白色) PS1='...1m\]\$\[\033[1;37;1m\]' source一下:source ~/.bashrc 终端中路径名过长问题 有时候在终端需要连续打开几层的文件夹才能访问到我们所需的文件,而这个时候在终端显示的路径名就像是一条长长的尾巴...使终端只显示用户当前工作目录的名字 可以在PS1变量设置终端只显示工作目录的基名,即将PS1变量的\w的小写的w换成大写的W,修改后的PS1变量: PS1='\[\033[1;31;1m\]\u@

    4.1K20

    Java平台,标准版Oracle JDK 9的新功能

    JEP 282:jlink:Java连接器 组合并优化一模块及其依赖关系到自定义运行时映像,JEP 220定义。...默认情况下,Linux或Solaris上的JDK使用GTK + 2(如果可用)如果没有,它使用GTK + 3。 要使用特定版本的GTK +,请设置系统属性jdk.gtk.version。...此系统属性的值可能为2,2.2或3.您必须在应用程序加载GTK +之前设置此属性,并且不得与较早由另一个工具包加载的GTK +版本冲突。 显示自定义关于和首选项窗口。...默认情况下,Linux或Solaris上的JDK使用GTK + 2(如果可用)如果没有,它使用GTK + 3。 要使用特定版本的GTK +,请设置系统属性jdk.gtk.version。...此系统属性的值可能为2,2.2或3.您必须在应用程序加载GTK +之前设置此属性,并且不得与较早由另一个工具包加载的GTK +版本冲突。

    1.6K70

    21款必不可少的Ubuntu桌面应用程序

    替代方案:Photomatix(收费版)、Pinta(GTK)和Shotwell(GTK)。 4. VLC媒体播放器 ?...无论你想试用一种新潮的GTK主题、更换图标集、调整应用程序菜单的大小或行为、设置触发角,还是缩小Unity启动器的尺寸,它都能满足要求。...Weather Indicator天气工具 关注天气状况是我们日常生活的一个基本部分。如果你想更详细地知道天气在接下来几天会怎样,根本不能“看窗外”、猜测一通。...我在开始撰写本文时,就相信自己不会列出可替代Rhythmbox的其他任何音乐播放器,就因为很少有播放器像它那样提供强大的功能。 21. Go For It任务管理器 ?...应该关注的其他必要应用程序 就像我在文章开头所说的那样,本文可以轻松介绍101款必不可少的Linux应用程序。

    7.5K30
    领券