【问题标题】:Passing arguments to Button functions将参数传递给 Button 函数
【发布时间】:2022-07-12 16:25:56
【问题描述】:

我正在尝试使用 Tkinter 构建 GUI。由于它会变得拥挤,我尝试将其拆分为多个脚本。如何将返回值从一个按钮功能/命令传递到另一个按钮,该按钮执行完全不同的脚本,但将 button1 的返回值用于其功能之一?

所以我想要的是这个。这只是一个粗略的草图,但我认为人们可以理解我的目标。我对不同的方法持开放态度。

GUI.py

import functions

arg1 = 1
button1 = tk.Button(...., command = lambda: functions.addOne(arg1))

button2 = tk.Button(**Run program executeTHIS.py with return value from button1 command**)

functions.py

addOne(arg1):
     value = arg1 + 1
     return value

executeThis.py

functionNeedingArgumentFromButton1(value):
     ...
     
     return something

...
...

【问题讨论】:

    标签: python tkinter


    【解决方案1】:

    我认为最好为您的按钮使用包装函数。对于这种情况,这似乎效率不高,但是当您进行复杂操作时,这将使您的GUI.py 可读。这里我使用了一个global variable来在Buttons和functions之间共享值。

    GUI.py

    import tkinter as tk
    
    from my_functions import addOne
    from my_functions2 import functionNeedingArgumentFromButton1
    
    value = 1
    
    def wrapper1():
        global value
        value = addOne(value)
        var.set(value)
    
    
    def wrapper2():
        global value
        value = functionNeedingArgumentFromButton1(value)
        var.set(value)
    
    
    if __name__ == '__main__':
        root = tk.Tk()
        root.title("Import functions")
    
        Button1 = tk.Button(root, text="Run1", command=wrapper1)
        Button1.pack()
    
        Button2 = tk.Button(root, text="Run2", command=wrapper2)
        Button2.pack()
    
        var = tk.StringVar()
        var.set('0')
    
        label1 = tk.Label(root, textvariable=var)
        label1.pack()
    
        root.mainloop()
    

    my_functions.py

    def addOne(arg1):
        value = arg1 + 1
        return value
    

    my_functions2.py

    def functionNeedingArgumentFromButton1(value):
        value = value + 100
        return value
    

    【讨论】:

      猜你喜欢
      • 2013-01-27
      • 2021-04-18
      • 1970-01-01
      • 2014-02-07
      相关资源
      最近更新 更多