美文网首页
Python GTK 3 GUI 编程 -- 003 按钮#2

Python GTK 3 GUI 编程 -- 003 按钮#2

作者: bokerr | 来源:发表于2020-12-01 01:44 被阅读0次

    大家好啊, 今天来讲解radio button 单选框

    • 什么是单选框

      • Gtk.RadioButton 继承自 Gtk.CheckButton


        RadioButton
    • 如何创建

      • 首先创建第一个(主), 可以实例化Gtk.RadioBurron类, 还可以调用类的new_with_label(group, label)方法, group就是这个按钮所在的组, 由于这是主按钮, 所以添None
        self.radio = Gtk.RadioButton.new_with_label(None, "Button 1")
      • 创建其他的按钮, 因为单选, 所以这几个按钮需要在一个组里面, 需要调用类的new_from_widget(group) 或者new_with_label_from_widget(group, label), group 就是那个组的主成员所以是self.radio
        self.radio2 = Gtk.RadioButton.new_with_label_from_widget(self.radio, "Button 2")
      • 完整代码
    import gi
    gi.require_version("Gtk", "3.0")
    
    from gi.repository import Gtk
    
    
    class MyWindow(Gtk.Window):
        def __init__(self):
            super(MyWindow, self).__init__(title="Radio Button")
    
            self.radio = Gtk.RadioButton.new_with_label(None, "Button 1")
            self.radio2 = Gtk.RadioButton.new_with_label_from_widget(self.radio, "Button 2")
            self.radio3 = Gtk.RadioButton.new_with_label_from_widget(self.radio, "Button 3")
    
            self.box = Gtk.Box() # 盒子容器, 放置控件用的, 以后讲
            self.box.pack_start(self.radio, True, False, 0)
            self.box.pack_start(self.radio2, True, False, 0)
            self.box.pack_start(self.radio3, True, False, 0)
    
            self.add(self.box)
    
    
    win = MyWindow()
    win.connect("destroy", Gtk.main_quit)
    win.show_all()
    Gtk.main()
    

    下面说下radio button的特有属性 (因为继承自check box, 其他属性参考上一篇文章)

    • 属性

      • group 属性, 接受Gtk.RadioButton类型
        • 有什么用呢?
          • 在创建radio button的时候可以直接实例化RadioButton对象 如self.radio = Gtk.RadioButton(label="Button"), 用这个属性在创建其他的radio button时, 就不用调用其他的方法, 直接 self.radio2 = Gtk.RadioButton(group=self.radio, label="Button")
          • 是不是方便了许多(其实并没有), 所以两种方法, 选择自己喜欢的
    • 方法

      • 实例化时调用
        • new_with_label(group, label)
        • new_from_widget(group)
        • new_with_label_from_widget(group, label)
      • 实例方法
        • get_group()
        • join_group(RadioButton或None) 使当前radio button 加入某一组中
        • set_group(RadioButton或None) 和join_group差不多

    希望大家喜欢, 欢迎留言
    下次讲解 信号机制 (signal)

    相关文章

      网友评论

          本文标题:Python GTK 3 GUI 编程 -- 003 按钮#2

          本文链接:https://www.haomeiwen.com/subject/dodjwktx.html