【发布时间】:2015-07-19 19:16:43
【问题描述】:
我尝试了很多,但总是失败。对于具有 GUI 经验的人来说,这将非常容易。请举一些例子或重构我的代码。
我正在尝试创建类似于 Conky 的东西(目前不是一个选项)。用于在桌面上显示文本和图像等信息的全屏窗口。我需要有关 gtk 脚本框架的帮助。我希望能够显示磁盘中的多个图像(在自定义位置),每 10 分钟更新一次,以及来自文件或命令的文本。
现在我有这个:
#!/usr/bin/python
import gtk
import sys
import cairo
def transparent_expose(widget, event):
""" Make the given widget transparent. """
cr = widget.window.cairo_create()
cr.set_operator(cairo.OPERATOR_CLEAR)
region = gtk.gdk.region_rectangle(event.area)
cr.region(region)
cr.fill()
return False
class PyApp(gtk.Window):
def __init__(self):
super(PyApp, self).__init__()
self.set_title("Fixed")
self.set_size_request(1300, 280)
self.modify_bg(gtk.STATE_NORMAL, gtk.gdk.Color(6400, 6400, 6440))
self.set_position(gtk.WIN_POS_CENTER)
screen = self.get_screen()
rgba = screen.get_rgba_colormap()
self.set_colormap(rgba)
self.set_app_paintable(True)
self.connect("expose-event", transparent_expose)
def wetherchart(self):
try:
self.thessaloniki = gtk.gdk.pixbuf_new_from_file("/dev/shm/WEATHER/Thessaloniki.comb.png")
except Exception, e:
self.thessaloniki = gtk.gdk.pixbuf_new_from_file("/home/athan/LOGs/wait.svg")
try:
self.katerini = gtk.gdk.pixbuf_new_from_file("/dev/shm/WEATHER/Katerini.comb.png")
except Exception, e:
self.katerini = gtk.gdk.pixbuf_new_from_file("/home/athan/LOGs/wait.svg")
try:
self.florina = gtk.gdk.pixbuf_new_from_file("/dev/shm/WEATHER/Florina.comb.png")
except Exception, e:
self.florina = gtk.gdk.pixbuf_new_from_file("/home/athan/LOGs/wait.svg")
self.thessaloniki = self.thessaloniki.scale_simple(505,240,gtk.gdk.INTERP_BILINEAR)
self.katerini = self.katerini.scale_simple(505,240,gtk.gdk.INTERP_BILINEAR)
self.florina = self.florina.scale_simple(505,240,gtk.gdk.INTERP_BILINEAR)
image1 = gtk.Image()
image2 = gtk.Image()
image3 = gtk.Image()
image1.set_from_pixbuf(self.thessaloniki)
image2.set_from_pixbuf(self.katerini)
image3.set_from_pixbuf(self.florina)
fix = gtk.Fixed()
fix.put(image1, 515, 3)
fix.put(image2, 1025, 3)
fix.put(image3, 5, 3)
self.add(fix)
self.connect("destroy", gtk.main_quit)
self.show_all()
PyApp()
#gtk.main()
def main():
gtk.main()
return 0
if __name__ == "__main__":
app = PyApp()
app.wetherchart()
#~
#~ backups=Backups()
#~ gtk.timeout_add( 15* 1000, backups.update)
#~
#~ calendar=Calendar()
#~ gtk.timeout_add( 1 * 1000, calendar.update)
#~
#~ disks=Disks()
#~ gtk.timeout_add( 5 * 60 * 1000 , disks.update)
#~
#~ events=Events()
#~ gtk.timeout_add( 10 * 1000 , events.update)
#~
#~ process = Process()
#~ gtk.timeout_add( int(0.5 * 1000), process.update)
#~
#~ running = Running()
#~ gtk.timeout_add( 60 * 1000, running.update)
#~
#~ temps = Temps()
#~ gtk.timeout_add( int(2 * 1000), temps.update)
#~
#~ transmision = Transmision()
#~ gtk.timeout_add( int(1 * 1000), transmision.update)
main()
它运行正常,但我没有设法让它刷新图像。 对于放置和刷新多个图像和文本标签的通用解决方案,我将不胜感激。
感谢您的帮助!
【问题讨论】:
-
我试过这个,我没能成功
-
stackoverflow.com/questions/13938949/… 它的工作!我测试过。希望有帮助
-
“刷新图像”是指“更改图像”吗?如果是这样,您可能希望使用 GtkDrawingArea 甚至 Clutter 来代替 GtkFixed 和 GtkImage...
-
我的意思是从磁盘重新加载,没有编辑。我挣扎了很多时间,但是面向对象的编码和 GTK 混淆了太多,无法弄清楚这一点。如果有人能给我一个简单的模板...我需要能够在我的桌面上加载图像和标签并以自定义间隔刷新它们。不会成为实际应用程序。