【问题标题】:How to return value of function out of mainloop?如何从主循环中返回函数的值?
【发布时间】:2018-02-12 23:55:10
【问题描述】:

在这段代码中,我想return 一个超出集合function 的值,但不能。

我该怎么办?

from tkinter import *

temp= 0
def sel():
   selection = "You selected the option " + str(var.get())
   label.config(text = selection)
   temp=selection
   return temp

root = Tk()
var = IntVar()
R1 = Radiobutton(root, text="Option 1", variable=var, value=1,
                 command=sel)
R1.pack( anchor = W )
R2 = Radiobutton(root, text="Option 2", variable=var, value=2,
                 command=sel)
R2.pack( anchor = W )
R3 = Radiobutton(root, text="Option 3", variable=var, value=3,
                 command=sel)
R3.pack( anchor = W)
label = Label(root)
label.pack()
print (sel())
root.mainloop()

print 函数为什么不显示结果?

【问题讨论】:

  • 我认为您需要先阅读一些教程以了解 tkinter 的工作原理。并请修正语法错误和拼写错误。这很难阅读。
  • 还给哪里?

标签: python tkinter


【解决方案1】:

您的 print 函数在您的 GUI 运行之前被调用。

如果您想在选择单选按钮时打印一条消息,则需要将其添加到 sel() 函数中,例如

def sel():
    selection = "You selected the option " + str(var.get())
    label.config(text = selection)
    print(selection)
    # temp=selection ## this is unnecessary
    return selection

你的temp 变量也不需要在那里,你可以使用你已经创建的变量。

【讨论】:

  • 谢谢,但是如何在 GUI 主循环的其他函数中使用这个函数的结果?
  • 调用这个函数inside另一个函数,并可选择将它分配给一个变量(a = sel())。
  • 您的其他函数能否询问 GUI 小部件以获取这些详细信息?否则,您可以将 selection 分配给全局变量,以便它可用。
  • @Alireza,我不清楚您为什么要从 sel 函数返回。在您的示例中,返回值似乎被忽略了。你能澄清你的意图/愿望吗?
  • 我想创建几个窗口,可以从用户那里获取信息并在彼此之间传输。
猜你喜欢
  • 2015-08-08
  • 2020-01-25
  • 1970-01-01
  • 2021-01-12
  • 1970-01-01
  • 2016-03-23
  • 1970-01-01
  • 2014-04-10
  • 1970-01-01
相关资源
最近更新 更多