PyQt4 到 PyQt5 还是改了很多东西的,特别是信号与槽的机制。 比如:
# PyQt4 self.connect(buttonBox, SIGNAL("accepted()"), self, SLOT("accept()")) # PyQt5 buttonBox.accepted.connect(self.accept)这样直接该代码是没问题,但是有的情况下,一些 PyQt4 代码封装为某种简便的函数,改起来就有点突然不知道怎么办。 本文就是记录这么一个情况,并提供一个解决办法。
比如下面的代码:
# PyQt4 def createAction(self, text, slot=None, shortcut=None, icon=None, tip=None, checkable=False, signal="triggered()"): action = QAction(text, self) if icon is not None: action.setIcon(QIcon(":/{}.png".format(icon))) if shortcut is not None: action.setShortcut(shortcut) if tip is not None: action.setToolTip(tip) action.setStatusTip(tip) if slot is not None: self.connect(action, SIGNAL(signal), slot) if checkable: action.setCheckable(True) return action这里的信号,属于一个字符串,一时突然不知道怎么改,(⊙o⊙)…。
看下面这段简单的代码:
class A(object): def a(self): print('GodLordGee') def b(self): c= 'a' func = getattr(self, c, None) func() test = A() test.b()运行结果:
GodLordGee >>>这样,原来可以啊。ok,这个问题可以解决了。
一直用 Python 的.取用类的属性,忘记了getattr的方式,没想到可以在这里用到。
Fin.