进度条
什么是进度条
上面的就是进度条
下面是两个按钮, 控制他的进度, 增加 10% 和 降低 10%
创建
self.progress_bar = Gtk.ProgressBar()
上面示例的实现
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="Stack And Stack Switch")
self.main_box = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
self.add(self.main_box)
self.sub_box = Gtk.Box()
self.progress = Gtk.ProgressBar(fraction=0.6)
self.btn_inc = Gtk.Button(label="Inc 10%")
self.btn_dec = Gtk.Button(label="Dec 10%")
self.main_box.pack_start(self.progress, True, False, 0)
self.main_box.pack_start(self.sub_box, True, False, 0)
self.sub_box.pack_start(self.btn_inc, True, True, 0)
self.sub_box.pack_start(self.btn_dec, True, True, 0)
self.btn_inc.connect("clicked", self.on_click)
self.btn_dec.connect("clicked", self.on_click)
def on_click(self, widget):
label = widget.get_label()
if label == "Inc 10%":
self.progress.set_fraction(self.progress.get_fraction() + 0.1)
else:
self.progress.set_fraction(self.progress.get_fraction() - 0.1)
win = MyWindow()
win.connect("destroy", Gtk.main_quit)
win.show_all()
Gtk.main()
常用属性
- text 在进度条上显示的文字
- ellipsize 省略, 当进度条长度不足以显示文字时省略, 接受Pango.EllipsizeMode(前面讲标签时说过)
- fraction 进度 0 - 1 float
- show_text 是否展示文字 bool
- pause_step
常用方法
- pause() 暂停进度条
配合pause_step使用
每次调用 pause() 进度条向前移动 pause_step个长度
- 其他都是设置属性的方法
旋转控件 (spinner)
什么是Spinner
上面的是spinner, 下面用了一个toggle button 来控制是否旋转
创建
self.spinner = Gtk.Spinner()
上面示例的实现
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="Stack And Stack Switch")
self.spinner = Gtk.Spinner()
self.toggle = Gtk.ToggleButton(label="Toggle Spin")
self.box = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
self.box.pack_start(self.spinner, True, True, 0)
self.box.pack_start(self.toggle, True, False, 0)
self.add(self.box)
self.toggle.connect("toggled", self.on_toggle)
def on_toggle(self, widget):
active = widget.get_active()
if active:
self.spinner.start()
else:
self.spinner.stop()
win = MyWindow()
win.connect("destroy", Gtk.main_quit)
win.show_all()
Gtk.main()
属性
- 只有一个
- active 是否旋转 bool
方法
- 只有两个
- start() 开始
- stop() 停止
这里通常会用到定时器, 以后讲
欢迎留言, 下篇文章讲数据展示 Treeview