我有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以接受数字并通过
答案 0 :(得分: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
错误。