有没有一种方法可以调用函数“ a”,从而在可迭代/屈服函数“ b”上调用next()

问题描述 投票:0回答:1

我有2个功能,如图所示:

def num():
  for number in range(1, 5):
    yield number

def config_btn():
  global rad_btn1, rad_btn2, rad_btn3, rad_btn4
  c = next(num())

  temp_entry.config(text=f'{iterate_questions(2)}'),
  # temp_entry.config(state=DISABLED)

  rad_btn1.config(text=f'{iterate_answer_choices(c, 1).title()}', indicatoron=0),

  rad_btn2.config(text=f'{iterate_answer_choices(c, 2).title()}', indicatoron=0),

  rad_btn3.config(text=f'{iterate_answer_choices(c, 3).title()}', indicatoron=0),

  rad_btn4.config(text=f'{iterate_answer_choices(c, 4).title()}', indicatoron=0)

def num()是一个函数,它在迭代时会产生1到5的数字(希望如此),而config_btn使用前一个函数为“ c”分配一个数字。然后将“ c”传递给另一个函数。有没有一种方法可以从这些函数之外调用config_btn,以使“ c”更改为下一个数字并继续执行该函数的其余部分?

我已经尝试更改config_btn以接受数字并通过

python user-interface tkinter ttk
1个回答
0
投票

如果其他全局变量不打扰您,则可以执行此操作:

def num():
  for number in range(1, 5):
    yield number

c = num()

def config_btn():
  global rad_btn1, rad_btn2, rad_btn3, rad_btn4, c
  next(c)

  temp_entry.config(text=f'{iterate_questions(2)}'),
  # temp_entry.config(state=DISABLED)

  rad_btn1.config(text=f'{iterate_answer_choices(c, 1).title()}', indicatoron=0),

  rad_btn2.config(text=f'{iterate_answer_choices(c, 2).title()}', indicatoron=0),

  rad_btn3.config(text=f'{iterate_answer_choices(c, 3).title()}', indicatoron=0),

  rad_btn4.config(text=f'{iterate_answer_choices(c, 4).title()}', indicatoron=0)

但是似乎并不干净。一定会有更好的办法。然后,如果到目前为止,您必须处理在第5次迭代中抛出的StopIteration错误。

© www.soinside.com 2019 - 2024. All rights reserved.