我有一个主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_color中的return操作不会返回到A.py程序。我该怎么做?我应该在打印时使用stdout吗?我精确地说,单击后,我想做其他完全不需要GUI的操作。
在return color[0]
中的return_color
之前执行self.selected_color = color[0]
,在Gtk.main()
中执行return w.selected_color
之后