這是我main.py我有一個函數調用loadShot,我想從另一個如何調用pyside主窗口的功能從另一個python腳本
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
打電話這是我其他的Python文件,它是一個關鍵監聽器,我想要loadShot函數。問題是我繼續加載MainWindow作爲一個實例。我做不到的。我只需要能夠在我的MainWindow類中調用該函數而不加載另一個實例。
def handle_Ctrl_L():
m = MainWindow()
m.loadShot()
hk = HotKeys()
w = WindowMgr()
pid = w.GetProcessID('Blade')
w.focusWindow(pid)
time.sleep(.2)
hk.F8()
這不是100%清楚你要問什麼,但它聽起來像你想調用一個綁定的方法(一個方法,有'self'作爲第一個參數,在你的情況下'loadShot'),沒有實例化你的類。你不能那樣做。你可以使該方法成爲一個類方法,但是你會失去對像'self.shotName_Line.text()'等實例變量的引用。你能擴展你實際上想要實現的一點嗎? – 101
感謝您的回覆。我有我的main.py,其中有我的pior gui MainWindow。我有幾個與gui交互的方法。 loadShot()從一行編輯信息並將其寫入文件。在我的other.py文件中。我有一個鍵盤監聽器,它具有handle_CTRL_L()方法,我希望能夠調用loadShot()方法。這不可能是一個實例,因爲它重新啓動了我的GUI。殺死所有信息並且不向文件寫任何東西。我希望能夠在調用方法時發出的handle_ctrl_L()方法下使用自定義信號。謝謝。 –