python - 我们如何在 pygobject 的处理程序中处理事件?
问题描述
我有一个 glade 文件,它从输入框中获取输入,并在单击按钮时将其显示为标签。
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.22.1 -->
<interface>
<requires lib="gtk+" version="3.20"/>
<object class="GtkWindow" id="windows1">
<property name="can_focus">False</property>
<child>
<placeholder/>
</child>
<child>
<object class="GtkFixed">
<property name="visible">True</property>
<property name="can_focus">False</property>
<signal name="destroy" handler="gtk_main_quit" swapped="no"/>
<child>
<object class="GtkButton" id="button1">
<property name="label" translatable="yes">Submit</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<signal name="clicked" handler="on_button1_clicked" swapped="no"/>
</object>
<packing>
<property name="x">182</property>
<property name="y">146</property>
</packing>
</child>
<child>
<object class="GtkEntry" id="box1">
<property name="width_request">100</property>
<property name="height_request">80</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
</object>
<packing>
<property name="x">68</property>
<property name="y">45</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="label1">
<property name="width_request">100</property>
<property name="height_request">80</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">label</property>
</object>
<packing>
<property name="x">321</property>
<property name="y">44</property>
</packing>
</child>
</object>
</child>
</object>
</interface>
这是我的 pygobject 代码
import gi
gi.require_version("Gtk", "3.0")
from gi.repository import Gtk
class Handler:
def gtk_main_quit(self, *args):
Gtk.main_quit()
def on_button1_clicked(self, button):
print("Hello World!")
## Take text value from Entry box and show it in Label
builder = Gtk.Builder()
builder.add_from_file("example.glade")
builder.connect_signals(Handler())
window = builder.get_object("windows1")
window.show_all()
Gtk.main()
目前在按钮点击它会打印Hello World!
。现在我们如何告诉on_button1_clicked
方法从带有 id 的输入框中获取输入box1
并将其显示在带有 id 的标签中label1
?
解决方案
如果有人感兴趣,这就是我解决问题的方法
import gi
gi.require_version("Gtk", "3.0")
from gi.repository import Gtk
class Handler:
def gtk_main_quit(self, *args):
Gtk.main_quit()
def on_button1_clicked(self, button):
text = box.get_text()
label.set_text(text)
## Take text value for Entrybox and show it in label
builder = Gtk.Builder()
builder.add_from_file("example.glade")
builder.connect_signals(Handler())
window = builder.get_object("windows1")
label = builder.get_object("label1")
box = builder.get_object("box1")
window.show_all()
Gtk.main()
推荐阅读
- kubernetes - 如何在混合模式下设置自动扩展 Kubernetes 集群
- elasticsearch - 如何通过过滤查询获取某些字段中包含特定单词的文档?
- python - Python - 为什么我的超时异常总是执行?
- javascript - 在 ReactNative 中使用滑块滚动水平滚动视图
- string - 模式匹配列表失败
- python - HackerRank 对所有隐藏的测试用例给出“错误答案”
- linux - 使用 rename 命令批量重命名文件
- react-native - 使用 react native firebase/ 自定义接收到的远程通知
- java - 重命名的图像不会出现在 imageView 中
- javascript - 从组中移除对象会从场景中移除对象