繁体   English   中英

Python Tkinter GUI应用查询

[英]Python Tkinter GUI application query

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

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

有没有办法在单独的文件中编写 class 的方法,可以从主 class 中调用。 GUI 中的消息日志记录在主 class 中,因此如果将方法写入单独的文件中,则写入另一个文件中的日志消息将如何出现在主 window 中。

请提出替代方案。

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

这是一个简单的应用程序示例,它通过单击按钮更改 label。 方法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")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM