如何为对象或函数添加一些索引或ID?

How to add some index or ID to object or function?

提问人:ntfs1984 提问时间:10/28/2023 更新时间:10/28/2023 访问量:24

问:

有一个简单的代码示例(python 3、linux、gtk4)

#!/usr/bin/python3
import sys
import gi
import os, fnmatch
import configparser
gi.require_version('Gtk', '4.0')
from gi.repository import Gtk,Gio,Gdk
class MainWindow(Gtk.ApplicationWindow):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.app_ = self.get_application()
        self.set_default_size(800, 600)
        for i in range(1, 11):
         self.button = Gtk.Button.new()
         self.button.set_label('test'+str(i))
         self.button.connect("clicked", self.onclick)
         self.set_child(self.button)
        
    def onclick(self, button):
        print(button)
        self.button.set_label('NEW LABEL')
        self.ANOTHER_BUTTONS.set_label('ANOTHER LABELS')
        self.ANOTHER_BUTTON.do_something_from_gtk()

class MyApp(Gtk.Application):
    def __init__(self, **kwargs):
        super().__init__(**kwargs)

    def do_activate(self):
        active_window = self.props.active_window
        if active_window:
            active_window.present()
        else:
            self.win = MainWindow(application=self)
            self.win.present()
app = MyApp(application_id="com.github.yucefsourani.myapplicationexample1",flags= Gio.ApplicationFlags.FLAGS_NONE)
app.run(sys.argv)

此代码 - 必须在窗口上创建 10 个按钮,单击什么,调用函数“onclick”,并且函数内部的代码应该可以通过某个标识符访问所有按钮的属性。

还想提一下,除了Gtk.Button之外,还可以有任何其他对象,所以我的问题是关于Python而不是Button属性的。

是否可以使用某些索引来调用对象? 类似于“self.button[i] = Gtk.Button.new()”?

谢谢!

我尝试添加索引或任何其他 ID - 不起作用,总是返回错误,例如 self.names[i] = Gtk.Button() ~~~~~~~~^^^ IndexError: list assignment index out of range

蟒蛇 gtk3 pygtk

评论

1赞 Tim Roberts 10/28/2023
Gtk按钮只是对象。您可以使用 将它们存储在列表中,就像对任何其他对象一样。他们并不特别。self.names.append
1赞 Silvio Mayolo 10/28/2023
如果你通过使用Gtk绑定将自己一头扎进Python中,那么请不要这样做。在将第三方库投入其中之前,请确保您了解列表、字典和函数以及所有基本的 Python 概念。

答: 暂无答案