【问题标题】:Excetue buttons in a new tkinter window which is called within the program (Python 3.x)在程序中调用的新 tkinter 窗口中的 Excetue 按钮(Python 3.x)
【发布时间】:2021-03-08 08:00:18
【问题描述】:

我有一个 Python GUI,可以进行简单的计算。运行名为 gui.py 的主文件会打开一个图形界面。我打开图形界面并自动单击 Kjør beregning 和 Resultater 按钮。 (它在挪威语中的意思是“运行计算”和“结果”)。 它为我提供了一个名为 Resultater 的新窗口,它有自己的按钮。问题是如何在不点击的情况下在新窗口中调用函数或执行按钮。

if __name__ == "__main__":
# Kjører program
root = KL_mast()
hovedvindu = Hovedvindu(root)
# starts calculation then invokes results button
hovedvindu._beregn()
hovedvindu._resultater()

root.mainloop()

hovedvindu._resultater() 打开一个名为 Resultater 的新框架,我想在打开它后调用那里的函数。这是 Resultater 框架以及如何定义 Tabell 按钮,我想通过在上面的 root.mainloop() 之前添加额外的代码来打开它

class Resultater(tk.Frame):
"""Vindu for resultater."""

def __init__(self, *args, **kwargs):
    """Initialiserer vindu."""
    tk.Frame.__init__(self, *args, **kwargs)
    self.pack(fill="both")

    tabell_btn = tk.Button(knapper_frame, text="Tabell", font=bold,
                           command=self.M._tabell)

如果有帮助,这是我之前与同一程序相关的问题。

Execute tkinter button without clicking on it

【问题讨论】:

    标签: python python-3.x tkinter button calculation


    【解决方案1】:

    Tkinter 按钮有一个名为 invoke 的方法,女巫调用按钮的回调,并返回该函数返回的内容,如果按钮被禁用或没有回调则无效。要在另一个框架中调用按钮只需使用按钮的名称

    这里是如何使用调用:

    import tkinter as tk
    
    #Onclick Method1
    def OnClick():
        #Invoking button on seperate frame
        btn2.invoke()
    
    #Onclick Method 2
    def ResulatorOnClick():
        print('btn2 has been clicked')
    
    master = tk.Tk()
    
    Resulator = tk.Frame(master)
    Resulator.pack()
    
    btn1 = tk.Button ( master, width=40,height =20, command=OnClick)
    btn1.pack()
    
    btn2 = tk.Button ( Resulator, width=40,height =20, command=ResulatorOnClick)
    btn2.pack()
    
    master.mainloop()     
    

    输出:btn2 has been clicked

    【讨论】:

    • 感谢您的回复。它工作得很好,但它不能解决我的问题。我想调用一个在“结果”框架中而不是在“hovedvindu”中的按钮。通过调用 hovedvindu._resultater() 打开“Resultater”框架。看看你的例子,它会是这样的: btn1.invoke() 打开一个新框架,其中有一个名为 btn2 的按钮,我想调用那个按钮。
    • 我按照你的建议试过了。 Invoke 可与“Hovedvindu”(主窗口)中的所有按钮一起使用,但当我尝试使用 Resultater 窗口上的按钮调用时出现错误消息。并且错误说它没有按钮作为属性。回溯(最后一次调用):文件“c:_Data\UDK05\gui.py”,第 2793 行,在 Resultater.tabell_btn.invoke() AttributeError: type object 'Resultater' has no attribute 'tabell_btn'跨度>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-02
    • 2013-02-07
    • 1970-01-01
    • 2020-08-30
    • 1970-01-01
    • 1970-01-01
    • 2019-04-29
    相关资源
    最近更新 更多