我需要在 QMainWindow 中动态创建按钮,我正在通过 RefreshData() Slot 函数进行尝试。关键是,尽管函数运行并创建了按钮,但它们并没有链接到 QMainWindow!但是,当我独立调用该函数时,此链接有效。我可能做错了什么,无法弄清楚。非常感谢
array_stations = {}
a = Station("A", 0, 0, 0)
b = Station("B", 50, 50, 0)
c = Station("C", 100, 100, 0)
array_stations[a.ID] = a
array_stations[b.ID] = b
array_stations[c.ID] = c
class GuiView(QtGui.QMainWindow):
def __init__(self):
super(GuiView, self).__init__()
self.initUI()
def initUI(self):
#CONTROLE DE ESTACOES - PARA CONTROLAR SE UMA ESTACAO EH NOVA OU NAO
self.estacoes = {}
#Set timer para atualizar Widget
self.timer2 =QtCore.QTimer()
self.timer2.timeout.connect(self.RefreshData) ### THIS ONE DOESNT ADD THE BUTTONS....
self.timer2.start(2000)
self.RefreshData() ### ... BUT THIS ONE DOES IT!
self.layout = QtGui.QVBoxLayout()
@pyqtSlot()
def RefreshData(self):
print "blabla"
global array_stations
########## ADD OR UPDATE BUTTONS #################
for s in array_stations:
if not s in self.estacoes:
# ADICIONO UM BOTAO A LISTA
self.estacoes[s] = QtGui.QPushButton(s,self)
self.estacoes[s].move(array_stations[s].x,array_stations[s].y)