Ini main.py saya. Saya memiliki fungsi bernama loadShot yang ingin saya panggil dari yang lain
class MainWindow(QMainWindow):
# Main Window UI
def __init__(self, parent=None):
QMainWindow.__init__(self, parent)
loadUi(os.path.join(SCRIPT_DIRECTORY, 'mainwindow.ui'), self)
self.connectInterface()
# Connect signals
def connectInterface(self):
self.scene_Line.textChanged.connect(self.shotName)
self.activeProjcet_Line.textChanged.connect(self.shotName)
self.character_Line.textChanged.connect(self.shotName)
self.take_Line.valueChanged.connect(self.shotName)
self.load_Button.setShortcut(QKeySequence("Alt+B"))
####################################################
# Shot Loader Functions
####################################################
def browse(self, dir):
root = Tkinter.Tk()
root.withdraw() #use to hide tkinter window
tempdir = tkFileDialog.askdirectory(parent=root, initialdir=dir, title='Please select a directory')
if tempdir.startswith('D:/Capture data/'):
self.activeProjcet_Line.setText(tempdir)
elif tempdir.startswith('R:/Project Files/'):
self.uploadProjcet_Line.setText(tempdir)
self.uploadFolder()
else:
pass
def uploadFolder(self):
project = self.activeProjcet_Line.text()
uploadDir = self.uploadProjcet_Line.text()
f = open('C:/_Mocap/output/folderName.txt', 'w')
f.write(' \n' + project.replace('D:/Capture data/', '') + '\n' + uploadDir.replace('R:/Project Files/', ''))
f.close()
def loadShot(self):
shot = self.shotName_Line.text()
f = open('C:/_Mocap/output/ShotLoader.txt', 'w')
f.write('\n' + '[name]\n' + '\n' + 'take Name=' + shot)
f.close()
self.uploadFolder()
if self.incrementTake.isChecked():
self.takeIncrement()
else:
pass
Ini adalah file python saya yang lain yang merupakan pendengar kunci dan saya ingin fungsi loadShot. Masalahnya adalah saya terus memuat MainWindow sebagai contoh. Yang tidak bisa saya lakukan. Saya hanya perlu memanggil fungsi di kelas MainWindow saya tanpa memuat instance lain.
def handle_Ctrl_L ():
m = MainWindow()
m.loadShot()
hk = HotKeys()
w = WindowMgr()
pid = w.GetProcessID('Blade')
w.focusWindow(pid)
time.sleep(.2)
hk.F8()
self
sebagai parameter pertama, dalam kasus AndaloadShot
) tanpa membuat instance kelas Anda. Anda tidak bisa melakukan itu. Anda dapat menjadikan metode itu sebagai metode kelas tetapi kemudian Anda akan kehilangan referensi ke variabel instan sepertiself.shotName_Line.text()
dll. Bisakah Anda sedikit memperluas apa yang sebenarnya ingin Anda capai? - person all or None   schedule 29.04.2015