Menu

如何在 yad 或其他替代方案中製作多個 –scale 對話框?

  • March 29, 2014

是否可以在yad中使用多個 –scale或其他替代方法輕鬆進行對話,您能幫我嗎?

我想要一個多開/關的界面。

例子:

在此處輸入圖像描述

這是我的劇本…

#!/bin/sh
enable=0
disable=1

ret=$(yad --scale --value $disable --min-value $enable --max-value $disable --text "Enabla/disable sudo" --width=200 --height=100)

if [[ $ret -eq 0 ]]; then
echo 'enable'

elif [[ $ret -eq 1 ]]; then
echo 'disable'
fi

這是一個用python寫的腳本,我試著學python,不知道怎麼給這個腳本傳值:(

#!/bin/python
from gi.repository import Gtk

class SwitcherWindow(Gtk.Window):

   def __init__(self):
       Gtk.Window.__init__(self, title="Switch Demo")
       self.set_border_width(10)

       hbox = Gtk.Box(spacing=6)
       self.add(hbox)

       switch = Gtk.Switch()
       switch.connect("notify::active", self.on_switch_activated)
       switch.set_active(False)
       hbox.pack_start(switch, True, True, 0)

       switch = Gtk.Switch()
       switch.connect("notify::active", self.on_switch_activated)
       switch.set_active(True)
       hbox.pack_start(switch, True, True, 0)

   def on_switch_activated(self, switch, gparam):
       if switch.get_active():
           state = "on"
       else:
           state = "off"
       print("Switch was turned", state)

win = SwitcherWindow()
win.connect("delete-event", Gtk.main_quit)
win.show_all()
Gtk.main()

我也嘗試過使用zenityyad完成 GUI,但是一旦我想做任何更複雜的事情,就像你建議的那樣,我已經碰壁了,這兩個工具並不是真的要完成這樣的任務。它們的最佳點在於非常基本的 GUI 元素,僅此而已,至少在它們目前的形式中是這樣。

要執行更複雜的任務,您可能不得不求助於實際的程式語言,例如 Python、Ruby 或 Perl,在這些語言中,您可以更好地訪問 GTK+ 庫,以創建它包含的各種小元件和圖形元素。

另一個競爭者是使用GTKDialog。有一個很好的教程展示了從這篇 PCLinuxOS 雜誌中可以完成的工作,標題為:使用 GTKDialog 創建 GUI

引用自:https://unix.stackexchange.com/questions/122060