【问题标题】:Tkinter class and methodsTkinter 类和方法
【发布时间】:2020-07-14 16:43:59
【问题描述】:

我有这个 tkinter 代码,工作正常,但我想把它们放到一个类中,每个进程都有方法。我对 Python 很陌生,我该怎么做?

你不必全部都做,只需要类和两个方法就可以了,我可以学习复制其余部分。

root= tk.Tk()

canvas1 = tk.Canvas(root, width = 400, height = 400,  relief = 'raised')
canvas1.pack()

label1 = tk.Label(root, text='EDA')
label1.config(font=('helvetica', 12))
canvas1.create_window(200, 25, window=label1)

label2 = tk.Label(root, text='Number of Clusters:')
label2.config(font=('helvetica', 8))
canvas1.create_window(200, 120, window=label2)

entry1 = tk.Entry (root)
canvas1.create_window(200, 140, window=entry1)

browseButtonExcel = tk.Button(text=" Import Excel File (CSV) ", command=App.getExcel,
                              bg='green', fg='white', font=('helvetica', 10, 'bold'))
canvas1.create_window(200, 70, window=browseButtonExcel)

processButton = tk.Button(text=' k-Means Clustering', command=cluster, bg='brown',
                          fg='white', font=('helvetica', 10, 'bold'))
canvas1.create_window(200, 170, window=processButton)

root.mainloop()

【问题讨论】:

  • 我认为你需要更具体地说明你想做什么——并且应该包括你自己的尝试(并解释为什么它不起作用)。
  • 我想创建一个类(例如 Class MyGUI():),我希望能够为每个标签创建方法,实例化类并调用方法。我希望这些信息有所帮助。谢谢

标签: python python-3.x class tkinter


【解决方案1】:

根据您问题中的代码,以下是您想要的一种方法。 请注意,我更改了一些名称以更好地符合 PEP 8 - Style Guide for Python Code 的建议 — 我建议您也开始这样做。

import tkinter as tk


class MyGUI(tk.Frame):
    def __init__(self, parent=None, *args, **kwargs):
        super().__init__(parent, *args, **kwargs)
        self.pack()
        self.create_widgets()

    def create_widgets(self):
        canvas1 = tk.Canvas(self, width=400, height=400,  relief='raised')
        canvas1.pack()

        label1 = tk.Label(self, text='EDA')
        label1.config(font=('helvetica', 12))
        canvas1.create_window(200, 25, window=label1)

        label2 = tk.Label(self, text='Number of Clusters:')
        label2.config(font=('helvetica', 8))
        canvas1.create_window(200, 120, window=label2)

        entry1 = tk.Entry(self)
        canvas1.create_window(200, 140, window=entry1)

        browse_excels_btn = tk.Button(text="Import Excel File (CSV) ",
                                      bg='green', fg='white', font=('helvetica', 10, 'bold'),
                                      command=self.get_excel)
        canvas1.create_window(200, 70, window=browse_excels_btn)

        clustering_btn = tk.Button(text='k-Means Clustering',
                                   bg='brown', fg='white', font=('helvetica', 10, 'bold'),
                                   command=self.cluster)
        canvas1.create_window(200, 170, window=clustering_btn)

    def get_excel(self):
        # App.getExcel()?
        pass

    def cluster(self):
        pass


if __name__ == "__main__":
    root = tk.Tk()
    root.title('Example')
    root.wm_geometry("400x400")
    main = MyGUI(root)
    main.pack(side="top", fill="both", expand=True)
    root.mainloop()

运行截图:

【讨论】:

  • 嗨,马蒂诺,非常感谢。这正是我想要的,您的解决方案非常有用和直接。谢谢!
  • charles:很高兴听到这个消息——我尽量保持简单并尽可能与原版相似。
猜你喜欢
  • 2014-11-02
  • 1970-01-01
  • 2016-06-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-02
  • 2021-07-29
相关资源
最近更新 更多