Не вызывайте с одним и тем же именем 2 разных элемента, в вашем случае self.newwindow
относится к QAction
как к методу класса, избегайте его, это тип ошибки, которую легко совершить, но которую трудно найти.
Если перейти к сути, вам просто нужно создать новый объект класса, но проблема в том, что сборщик мусора устранит его, чтобы избежать этого, есть 2 возможных варианта, во-первых, сделать новый элемент окна класса, или второй сохранить его в списке, это тот, который я выбираю, потому что я думаю, что вы хотите иметь несколько окон.
import sys
import os
from PySide import QtCore, QtGui
class Sticky(QtGui.QMainWindow):
def __init__(self,parent = None):
QtGui.QMainWindow.__init__(self,parent)
self.others_windows = []
self.initUI()
def initUI(self):
self.addToolBarElements()
self.show()
def addToolBarElements(self):
self.toolBar = self.addToolBar("toolBar")
self.newwindow = QtGui.QAction(QtGui.QIcon(os.path.join(os.path.dirname(__file__),'icons/new.png')), "New Note",self)
self.newwindow.setStatusTip("New")
self.newwindow.triggered.connect(self.on_newwindow)
self.toolBar.addAction(self.newwindow)
def on_newwindow(self):
w = Sticky()
w.show()
self.others_windows.append(w)
def run():
app = QtGui.QApplication(sys.argv)
notes = Sticky()
sys.exit(app.exec_())
run()