我正在使用tkinter,python 3.6.3和window OS构建我的第一个更大的Python应用程序。 应用程序的 GUI 由一个带有多个选项卡的笔记本组成。每个选项卡依次包含一个标签框架,而标签框架又包含许多其他小部件。
在搜索 Stackflow 时,我发现了让每个 labelFrame 成为一个类的想法。此后,在 main.py 中导入类,最后创建该类的实例。
现在,当按下tab1中的"开始"按钮时,我想执行"printThis"功能。理想情况下,我想使用脚本 main.py 中定义的函数。它还有兴趣知道如何在Run_Test_Window类中调用"printThis"方法。 不幸的是,我还没有解决这两个问题。
有趣的是,该程序实际上打印"现在成功",而我没有做任何事情,但是当我按下"开始"按钮时没有任何反应。
感谢帮助!谢谢!
main.py
import tkinter as tk
import tkinter.ttk as ttk
import RunTestClass as RT
def printThis():
print('Successful')
root = tk.Tk()
note = ttk.Notebook(root)
note.grid()
tab1 = ttk.Label(note, width = -20)
note.add(tab1, text = " Run Test ")
window1 = RT.Run_Test_Window(tab1)
root.mainloop()
RunTestClass.py
import tkinter as tk
import tkinter.ttk as ttk
# from main import printThis
class Run_Test_Window:
def printThis(self):
print('Now successful!')
def __init__(self,tab1):
runTestLabelFrame = ttk.LabelFrame(text ="Run Test", padding =10)
runTestLabelFrame.grid(in_ = tab1, padx = 20, pady = 20)
self.startButton = ttk.Button(runTestLabelFrame, text="START",command=self.printThis())
self.startButton.grid(row=5, column=1, padx = 10)
如果我是对的,您希望按钮使用main
中的printThis()
。这可以通过在main
中添加以下内容来完成:
rt = RT.Run_Test_Window(tab1)
rt.startButton.configure(command=printThis)
要调用RunTestClass
中定义的printThis()
,请使用(也在main
中)
rt.printThis()
注意:在command
参数中创建按钮时保留括号。所以把它改成这样:
self.startButton = ttk.Button(runTestLabelFrame, text="START",command=self.printThis)