Python从另一个模块调用类对象

时间:2014-01-21 14:35:18

标签: python class module gtk pygtk

我遇到了问题,我无法在互联网上找到答案。也许你可以帮助我

我有一个名为project.py的模块 我的主要功能是这样的:

def main():
    gtk.main()
    return 0


if __name__ == "__main__":
    cale = MainWindow()
    cale.create()
    main()

cale.create()是创建主窗口的函数。我想从模块module1.py中的类调用其他函数(cale.reload())来刷新我的窗口

我这样称呼它(首先我在module1中有导入项目)

project.cale.reload()

但它表明项目模块中没有名为cale的变量。我不能称之为

project.MainWindow().reload()

因为它会创建另一个对象而我不想这样做。我想使用cale对象。

请你告诉我怎么做?

编辑: 我的代码 project.py

# -*- coding: utf-8 -*-
from array import *
import calendar
import datetime
import pygtk
pygtk.require('2.0')
import gtk, pango
import time
import gobject
import threading, thread
import module1



class MainWindow:

    app = module1.Appointment()

    def reload(self):
        (...)

    def create(self):
        self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
        self.date = None
        window = gtk.Window(gtk.WINDOW_TOPLEVEL)
        self.window.set_title("Kalendarz")
        self.window.set_border_width(5)
        self.window.connect("destroy", lambda x: gtk.main_quit())

        (...)
        self.button_array[i][j] = module1.AppointmentWindow(i,j, now, self.menu.current_doctor)
        (...)


def main():
    gtk.main()
    cale.app.db.close()
    return 0


if __name__ == "__main__":
    global cale
    cale = MainWindow()
    cale.create() 
    print "zu"
    main()
    print "ok"

module1.py

# -*- coding: utf-8 -*-

import calendar
import datetime

import pygtk
pygtk.require('2.0')
import gtk, pango
import time
import project
import patient

class AppointmentWindow:
    def __init__(self, i, j, now, current_doctor):
        self.menu = gtk.Menu()
        menuitem1 = gtk.MenuItem("Dodaj")
        (...)
        menuitem1.connect("activate", self.menuitem4_response)
        self.menu.append(menuitem1))
        self.lab = patient.Appointment()
        self.button = gtk.Button(self.lab.get_label(self.now, self.j, self.current_doctor))
        self.button.connect("clicked", self.menu_display)

    def menuitem4_response(self, widget):
        project.cale.reload()

0 个答案:

没有答案