将数字时钟放在pygtk窗口中
作者:互联网
你好,
我有以下代码用于TKinter数字时钟:
#!/usr/bin/python
# -*- coding: utf-8 -*-
import Tkinter
import time
def tick(time_old, clock):
# get the current local time from the PC
time_now = time.strftime('%H:%M:%S')
# if time string has changed, update it
if time_now != time_old:
time_old = time_now
clock.config(text = time_now)
# calls itself every 200 milliseconds
# to update the time display as needed
# could use >200 ms, but display gets jerky
clock.after(200, tick, time_old, clock)
def main():
root = Tkinter.Tk()
clock = Tkinter.Label(root, font=('times', 20, 'bold'), bg='green')
clock.pack(fill=Tkinter.BOTH, expand=1)
tick("", clock)
root.mainloop()
if __name__ == "__main__":
main()
问题是:¿我如何将TKinter.label放在pygtk窗口(在label2中)(或林间空地)的中心位置?
窗口代码:
#!/usr/bin/python
# -*- coding: utf-8 -*-
import pygtk
pygtk.require("2.0")
import gtk
import gtk.glade
class Principal:
def __init__(self):
self.gladefile = "ejemplo.glade"
self.glade = gtk.Builder()
self.glade.add_from_file(self.gladefile)
label2 = self.glade.get_object("label2")
window = self.glade.get_object("ventana")
window.set_keep_above(True)
window.show_all()
self.glade.connect_signals(self)
def on_ventana_delete_event(self, widget, event):
gtk.main_quit()
def on_boton_clicked(self, widget):
self.glade.get_widget('label1').set_text('change title label')
def on_boton2_clicked(self, widget):
gtk.main_quit()
if __name__ == "__main__":
try:
a = Principal()
gtk.main()
except KeyboardInterrupt:
pass
Glade代码:
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<requires lib="gtk+" version="2.16"/>
<!-- interface-naming-policy project-wide -->
<object class="GtkWindow" id="ventana">
<property name="can_focus">False</property>
<property name="title" translatable="yes">Ventana Principal</property>
<property name="resizable">False</property>
<property name="window_position">center-always</property>
<property name="default_width">200</property>
<property name="default_height">100</property>
<property name="icon">Walker.png</property>
<signal name="delete-event" handler="on_ventana_delete_event" swapped="no"/>
<child>
<object class="GtkHBox" id="hbox1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkLabel" id="label1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="ypad">3</property>
<property name="label" translatable="yes">Acción</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkButton" id="boton">
<property name="label" translatable="yes">Cambiar label</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="use_action_appearance">False</property>
<property name="xalign">0.54000002145767212</property>
<signal name="clicked" handler="on_boton_clicked" swapped="no"/>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="label2">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">label</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
<child>
<object class="GtkButton" id="boton2">
<property name="label" translatable="yes">Salir</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="use_action_appearance">False</property>
<signal name="clicked" handler="on_boton2_clicked" swapped="no"/>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">3</property>
</packing>
</child>
</object>
</child>
</object>
</interface>
谢谢!
解决方法:
如果我答对了,那么下面的代码可以解决问题:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import pygtk
pygtk.require('2.0')
import gtk
import time
class Clock:
def __init__(self):
window = gtk.Window(gtk.WINDOW_TOPLEVEL)
window.connect("destroy", lambda w: gtk.main_quit())
window.set_title("Clock")
self.label = gtk.Label()
window.add(self.label)
window.set_border_width(25)
window.show_all ()
def update(self):
self.label.set_text(time.strftime('%H:%M:%S'))
return True #needed to keep the update method in the schedule
def main():
gtk.main()
if __name__ == "__main__":
clock = Clock()
gtk.timeout_add(200, clock.update) #add to the main loop scheduled tasks
main()
标签:glade,clock,pygtk,python 来源: https://codeday.me/bug/20191102/1990803.html