我在popmenu
中创建了pushButton_6
popmenu有三个动作,每个动作只能收音机
该动作用于调整播放歌曲的方式
我有一个问题,即触发动作会被记住。
例如,
这首歌的名单是:ABCDEFG,现在正在播放A
当我在随机动作之前点击有序动作时。
歌曲首先是有序的(歌曲B),然后是随机的(现在假设随机到E)
所以播放歌曲E。
但我希望这首歌只是随机播放,因为它现在已被转换为随机状态。
另一个例子,
当我点击有序动作,然后随机动作,最后通过有序动作
这首歌首先是有序的(歌曲B),然后是随机的(假设现在随机到E),最后是有序的。(歌曲F)
但我希望这首歌只是按顺序播放,因为它现在已被转换为有序的状态
所以这首歌应该扮演B而不是F。
我怎样才能让行动现在只被检查?
顺便说一句,popmenu可以出现吗?
这是popmenu的代码。
popmenu = QtGui.QMenu(self.ui.pushButton_6)
group = QtGui.QActionGroup(self.ui.pushButton_6)
group.setExclusive(True)
for i in range(1, 4):
if i==1:
action = group.addAction('ordered')
action.setCheckable(True)
#action.setChecked(True)
if i==2:
action = group.addAction('replay')
action.setCheckable(True)
if i==3:
action = group.addAction('random')
action.setCheckable(True)
popmenu.addAction(action)
self.ui.pushButton_6.setMenu(popmenu)
group.triggered.connect(self.sortedEvent)
这是sortedEvent的代码。
def sortedEvent(self,action):
if action.text()=="ordered":
print(action.text())
self.connect(self.mediaObject,QtCore.SIGNAL('finished()'),self.ordered)
if action.text()=="replay":
print(action.text())
self.connect(self.mediaObject,QtCore.SIGNAL('aboutToFinish()'),self.replay)
if action.text()=="random":
print(action.text())
self.connect(self.mediaObject,QtCore.SIGNAL('finished()'),self.random)
答案 0 :(得分:0)
connect
是附加的,它们不会互相替换。使用您的代码,如果我点击“已订购”然后“随机”,finished
信号将连接到两个广告位:self.ordered
和self.random
。我不认为这是你期望的行为。
相反,您可以拥有string
值,我们称之为whatToDoNext
。单击菜单将字符串设置为操作的文本:
def sortedEvent(self,action):
self.whatToDoNext=action.text()
在您的情况下,whatToDoNext
可以“订购”,“随机”或“重播”
finished
的{{1}}信号始终连接到同一个函数:
mediaObject