Как вызвать файл класса tkinter из другого файла класса? - PullRequest
0 голосов
/ 18 мая 2018

У меня есть 2 отдельных файла, каждый из которых имеет свой собственный определенный класс.

Файл 1:

class AndorCameraSDK:
    def __init__(self):
             self.count = 0 
    def LiveAcquisition(self,nframes,np.ndarray[np.unit16_t,ndim = 3,mode = 'c']image:
             cdef unsigned char * pBuf #This has the data
             #.......Initialisation of parameters..............#
             for i in range(nframes):
                     pBuf = <unsigned char *>calloc(sizeinBytes,sizeof(unsigned char)
                     #-----Storing the data in pBuf into a 3-D array image....#
                     pus_image = <unsigned short*> pBuf
                     for j in range(self.width):
                         pus_image = <unsigned short*> pBuf
                         for k in range(self.height):
                             image[i][j][k] = pus_image[0]
                             pus_image += 1
                         _puc_image += self.stride
  def function1(self):
             #Something else to be done with another function

В файле 2

import AndorCameraSDK as andorcamera
class AndorCameraGUI:
     def __init__(self):
           #Making use of Tkinter couple of widgets has been created, which includes a button named LiveImage which calls the function LiveImageGUI.
     def LiveImageGUI (self):
           self.camera = andorcamera()
           #define a 3D array I
           self.camera.LiveAcquisition(nframes,I) #called from File 1
     def LivePlot(self)
          # A function using FigurecanvasTkAgg to display the image processed from LiveAcquisition in the display area defined in the GUI panel

Чего я хочу достичь:

  1. Цикл for для сохранения pBuf в 3D-массиве должен быть функцией, вызываемой потоком внутри того же самого.
  2. Эта функциядолжен вызывать функцию LivePlot из файла 2, чтобы сохраненный кадр изображения отображался в графическом интерфейсе пользователя.
  3. И то и другое должно происходить так, что при обработке (i+1) первого кадра отображать i й кадр так, чтобынет задержки по времени.

Может кто-нибудь помочь мне с этим?Любая помощь высоко ценится.

1 Ответ

0 голосов
/ 18 мая 2018

У меня нет опыта многопоточности, но я не вижу доказательств многопоточности в вашем коде.Я привел код в соответствие с отступом и удалением лишнего кода.Слева код, который иллюстрирует, как вы можете вызывать функции между классами.

from tkinter import *

class AndorCameraSDK():
    def __init__(self, master):
        print('SDK Init') # Show that AndorCameraSDK.__init__ runs
        self.master = master         # Save reference to master

    def LiveAcquisition(self):
        print('SDK LiveAcquisition') # Show that AndorCameraSDK.LiveAcquisition runs
        pBuf = 'Some data'       # Dummy data
        self.master.LivePlot() # Call instance of AndorCameraGUI.LivePlot

class AndorCameraGUI():
    def __init__(self):
        print('GUI Init') # Show that AndorCameraGUI.__init__ runs

    def LiveImageGUI(self):
        print('GUI LiveImageGUI') # Show that AndorCameraGUI.LiveImageGUI runs
        self.camera = AndorCameraSDK(self) # Create instance of AndorCameraSDK
        self.camera.LiveAcquisition() # Call AndorCameraSDK.LiveAcquisition

    def LivePlot(self):
        print('GUI LivePlot') # Show that AndorCameraGUI.LivePlot runs

app = AndorCameraGUI()
app.LiveImageGUI()  # Instead of pressing a button
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...