有没有办法让object类控制由另一个object类初始化的gtk窗口?

2024-04-27 00:26:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个类来处理我的glade文件并初始化它,其他方法与用户交互。你知道吗

我想写的是另一个类,它控制已经初始化的glade文件的纹理选项(比如定位主题、定位图标)。你知道吗

我使用了我知道的所有类型的构建(包括继承),但是我遇到了多个错误(比如变量x没有定义)。 在最佳情况下,我得到了这个错误:当第二个类动作时;它从一开始初始化glade文件导致另一个窗口出现,设置第二个窗口的选项,保持原始窗口不变。你知道吗

这是一组导致此错误的代码:

头等舱:

def __init__(self):
    self.builder = gtk.Builder()

    self.glade_file = os.path.dirname(os.getcwd()) + '/glade_files/mainwin.glade'
    self.builder.add_from_file(self.glade_file)

    self.win=self.builder.get_object('window1')
    options()
    self.win.show()
    ................ and so on .

二等舱:

class options():
    .... some methods then 
    def icon_options():
        builder=gtk.Builder()
        a=os.path.dirname(os.getcwd()) + '/glade_files/mainwin.glade'
        builder.add_from_file(a)
        image=builder.get_object('image5')
        print image
        image.set_from_file('apple.png')

有没有办法让第二个类控制由第一个类初始化的窗口??你知道吗


Tags: 文件from定位imageselfgtkosdef
1条回答
网友
1楼 · 发布于 2024-04-27 00:26:35

一个可行的解决方案是在第二个类“options”中添加一个对在第一个类中创建的窗口的引用。因此您可以访问窗口的成员。可以在第二个类的构造函数中传递此对象,例如:

在第一节课上:

def __init__(self):
    self.builder = gtk.Builder()

    # some code here ...

    self.win = self.builder.get_object('window1')
    options(self.win)
    self.win.show()

二等舱:

class options():
    def __init__(self, window):
        self._window = window

    # do whatever you want with the window ...

相关问题 更多 >