我需要在QMainWindow中动态创建按钮,并且我通过RefreshData()Slot函数尝试它。 关键是,尽管功能运行和按钮已创建,但它们没有链接到QMainWindow !! 当我将该功能称为独立功能时,此链接可以正常工作。我能做错什么,无法弄明白。 LotOfThanks
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)
答案 0 :(得分:0)
加入循环:
self.estacoes[s].show()
编辑:
当我有点匆忙时,我输入了这个回复。为了澄清一点,你正在创建和添加新按钮,但现在你要告诉他们出现。默认情况下,不显示窗口小部件(包括子窗口小部件)。但是,如果您添加新的小部件,则需要再次为新小部件调用show()
以使其显示。