在pythongtk+中,这是处理多个组合框的最佳方式吗?

2024-09-28 17:25:09 发布

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

我正在尝试编写一些配置GUI,因为很多GUI都有两个或更多的组合框和其他东西。我不喜欢抄袭东西,让它到处都是一样的,冗长的,几乎不可读。 我想问你关于这个问题的话,创建sotcha类是否好,如果不好,如何更好地处理它?在

./listaRozwijana公司-实验材料.py在

#! /usr/bin/env python
# -*- coding: utf-8 -*-
#
# Author: Camelek.AmigaRulez
# License: Public Domain
# Date: poniedziałek, 14 listopad 2011 15:41:36
#

import gtk, gobject

class KlasaComboBox():
    def __init__(self, comboboxprojekt, comboboxnazwa, comboboxlista):
        self.cmb = comboboxprojekt.get_object(comboboxnazwa);

        self.liststore = gtk.ListStore(gobject.TYPE_STRING);
        for self.wpis in comboboxlista:
            self.liststore.append([self.wpis]);

        self.cmb.set_model(self.liststore);
        self.komorka = gtk.CellRendererText();
        self.cmb.pack_start(self.komorka, True);
        self.cmb.add_attribute(self.komorka, 'text',0);

    def get_active(self):
        return(self.cmb.get_active());

    def get_active_text(self):
        return(self.cmb.get_active_text());

    def wyswietl(self):
        print 'Wybrałeś', self.cmb.get_active_text(), 'jego indeks na tej liście to:', self.cmb.get_active();

class KlasaGlowna():
    def __init__(self):
        self.projekt = gtk.Builder();
        self.projekt.add_from_file("./gui/okienkoDwochListRozwijanych.ui");

        self.okienko = self.projekt.get_object("window1");
        self.projekt.connect_signals(self);

        self.lista1 = ["Motorola 68000"];
        self.lista1.append ("Intel MCS-51");
        self.lista1.append ("Cell");
        self.lista1.append ("Zilog Z80");
        self.cmb1 = KlasaComboBox(self.projekt, "combobox1", self.lista1);

        self.lista2 = ["Pierwszy", "Drugi", "Trzeci", "Czwarty", "Piąty"];
        self.cmb2 = KlasaComboBox(self.projekt, "combobox2", self.lista2);

    def uruchom(self):
        self.okienko.show_all();
        gtk.main();

    def on_combobox1_changed(self, widget, data=None):
        self.cmb1.wyswietl();

    def on_combobox2_changed(self, widget, data=None):
        self.cmb2.wyswietl();

    def on_window1_delete_event(self, widget, event, data=None):
        gtk.main_quit();

if __name__ == "__main__":
    app = KlasaGlowna();
    app.uruchom();
else:
    sys.exit(1);

./gui/奥金科DwochListRozwijanych.ui在

^{pr2}$

Tags: textselfgtkgetmaindefactiveappend