python Gtk3 возвращаемое значение при нажатии кнопки - PullRequest
0 голосов
/ 07 января 2020

У меня есть основная python программа A.py, которая вызывает GUI Gtk python программу B.py для отображения окна. Я хочу, чтобы это окно было цветными кнопками, и когда я нажимаю одну из них, основной код A.py восстанавливает значение, значение цвета RGB.

A.py

import B
c = B.gui_color()
print(c)

B.py

class W(Gtk.Window):

    def __init__(self):
        Gtk.Window.__init__(self, title="colors")
        self.box = Gtk.Box(spacing=0, homogeneous=True)
        self.add(self.box)

        colors = j.load("colors.json")

        for c in colors:
            b = Gtk.Button()
            b.connect("clicked", self.return_color, c["value"])
            # x257 to get the GTK color
            b.modify_bg(Gtk.StateType.NORMAL, Gdk.Color(c["value"][0] * 257, c["value"][1] * 257, c["value"][2] * 257))
            self.box.pack_start(b, True, True, 0)

    def return_color(self, widget, *color):
        self.close()
        return color[0]

def gui_color():
    w = W()
    w.connect("destroy", Gtk.main_quit)
    w.show_all()
    Gtk.main()

С программой все в порядке, у меня окно с несколькими цветными кнопками, однако я не могу понять, как восстановить цвет, на который я нажал. Действие return в return_color не возвращает программе A.py. Как я могу это сделать? Должен ли я использовать стандартный вывод с печатью? Я уточнил, что после нажатия я хотел бы выполнить другие действия, которые вообще не потребуют GUI.

1 Ответ

0 голосов
/ 09 января 2020

До return color[0] в return_color до self.selected_color = color[0], после Gtk.main() до return w.selected_color

...