Python Tkinter GUI应用程序查询

2024-10-02 06:25:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经构建了一个Python tkinter GUI应用程序,它是一个用于运行不同任务的应用程序。应用程序窗口水平分为两半,前半部分显示用户可以为所选菜单选项选择的选项,后半部分通过显示日志消息显示任务的进度。每个任务都有一个单独的菜单选项,用户选择菜单选项,并使用用户选项和提交按钮刷新前半部分

GUI是使用面向对象的方法构建的,其中菜单选项中的每个任务都是GUI对象的类方法。 我现在有大约5-6个菜单选项,工作正常,但代码量越来越大,调试任何问题或添加新功能变得越来越困难

有没有办法在单独的文件中编写一个类的方法,该文件可以从主类中调用。GUI中消息的日志记录是在主类中编写的,因此如果该方法是在单独的文件中编写的,那么在另一个文件中编写的日志消息将如何显示在主窗口中

请提出替代方案


Tags: 文件对象方法代码用户应用程序消息tkinter
1条回答
网友
1楼 · 发布于 2024-10-02 06:25:35

这可能不会完全帮助你,但这就是我所用的。我把我的tkinter代码分成两个文件。第一个gui.py包含GUI组件(小部件),第二个methods.py包含方法。 这两个文件应该在同一个目录中

下面是一个简单应用程序的示例,它可以通过单击按钮更改标签。方法change()存储在不同的文件中

gui.py

from tkinter import *
from tkinter import ttk
from methods import change   #Using absolute import instead of wildcard imports

class ClassNameGoesHere:
    
  def __init__(self,app):

    self.testbtn = ttk.Button(app,text="Test",command = lambda: change(self))
     #calling the change method.
    self.testbtn.grid(row=0,column=0,padx=10,pady=10)

    self.testlabel = ttk.Label(app,text="Before Button Click")
    self.testlabel.grid(row=1,column=0,padx=10,pady=10)

def main():
  root = Tk()
  root.title("Title Goes Here")
  obj = ClassNameGoesHere(root)
  root.mainloop()
  
if __name__ == "__main__":
  main()

方法.py

from tkinter import *
from tkinter import ttk

def change(self):
    self.testlabel.config(text="After Button Click")

相关问题 更多 >

    热门问题