我不能在我的类内部定义一个函数

huangapple go评论102阅读模式
英文:

I cannot define a function inside my class

问题

在你提供的代码中,你有一个问题是关于 command=clear 的部分,这里应该将 clear 指定为一个类方法,而不是一个独立的函数。此外,还有其他一些需要修复的问题,例如在 self.geometry = self.root.geometry('880x500') 行中应该使用 self.root.geometry('880x500'),以及在 self.original_languageself.translated_languagevalue 属性中需要提供一个语言列表。修正后的代码如下:

  1. import tkinter as tk
  2. from tkinter import ttk
  3. class Translate:
  4. def __init__(self):
  5. self.root = tk.Tk()
  6. self.root.geometry('880x500')
  7. def design(self):
  8. text_box = tk.Text(self.root, height=15, width=40)
  9. text_box.grid(row=0, column=0, padx=20, pady=20)
  10. translate_button = tk.Button(self.root, text='Translate', font=('Arial', 20))
  11. translate_button.grid(row=0, column=1, padx=10, pady=20)
  12. translated_text = tk.Text(self.root, height=15, width=40)
  13. translated_text.grid(row=0, column=2, padx=10, pady=20)
  14. self.original_language = ttk.Combobox(self.root, width=50, values=language_list)
  15. self.original_language.current(0) # Set the default selection
  16. self.original_language.grid(row=1, column=0)
  17. self.translated_language = ttk.Combobox(self.root, width=50, values=language_list)
  18. self.translated_language.current(0) # Set the default selection
  19. self.translated_language.grid(row=2, column=0)
  20. self.clear_button = tk.Button(self.root, text='Clear', font=('Arial', 18), command=self.clear)
  21. self.clear_button.grid(row=2, column=1)
  22. def clear(self):
  23. text_box.delete(1.0, tk.END)
  24. translated_text.delete(1.0, tk.END)
  25. def language_list(self):
  26. # You should define the language_list here
  27. return
  28. def run(self):
  29. self.root.mainloop()
  30. if __name__ == '__main__':
  31. t1 = Translate()
  32. t1.design()
  33. t1.run()

注意,你需要定义 language_list 变量来填充下拉框的值,并且你需要创建一个 Translate 对象并调用 run() 方法来启动你的应用程序。此外,我还将 clear 方法中的 self.original_languageself.translated_language 改为 text_boxtranslated_text,因为这些是你想要清空的文本框。

英文:

I am trying to define a function inside of my class but still on line 31 'command=clear' does not see my function i created below. Please help, thank you!!

  1. import tkinter as tk
  2. from tkinter import *
  3. import googletrans
  4. import textblob
  5. from tkinter import ttk,messagebox
  6. class Translate:
  7. def __init__(self):
  8. self.root = tk.Tk()
  9. self.geometry = self.root.geometry('880x500')
  10. def design(self):
  11. text_box = Text(self.root,height=15,width=40)
  12. text_box.grid(row=0,column=0,padx=20,pady=20)
  13. translate_button = Button(self.root,text='Translate',font=('Arial',20))
  14. translate_button.grid(row=0,column=1,padx=10,pady=20)
  15. translated_text = Text(self.root,height=15,width=40)
  16. translated_text.grid(row=0,column=2,padx=10,pady=20)
  17. self.original_language = ttk.Combobox(self.root,width=50,value=language_list)
  18. self.original_language.current(21)
  19. self.original_language.grid(row=1,column=0)
  20. self.translated_language = ttk.Combobox(self.root,width=50,value=language_list)
  21. self.translated_language.current(26)
  22. self.translated_language.grid(row=2,column=0)
  23. self.clear_button = Button(self.root,text='Clear',font=('Arial',18),command=clear)
  24. self.clear_button.grid(row=2,column=1)
  25. def clear(self):
  26. self.original_language.delete(1.0,END)
  27. self.translated_language.delete(1.0,END)
  28. def language_list(self):
  29. return
  30. self.root.mainloop()
  31. if __name__ == '__main__':
  32. t1 = Translate()
  33. t1.design()

I cannot make the functions work

答案1

得分: 1

以下是代码部分的翻译,不包括评论和问题的回答:

  1. # Edit: 不要使用通配符导入 `from tkinter import *`,因为这会将所有 `tkinter` 的命名空间加载到你的模块的命名空间中。
  2. # Edit: 忘记添加函数。
  3. 这是它看起来的样子吗
  4. - 23 27 行应为 `value=self.language_list`
  5. - 24 28 索引应为零应为
  6. self.translated_language.current(0)
  7. - 31 应为 `self.clear`
  8. - 41 注释掉 `#self.root.mainloop()`
  9. - 在第 46 行添加 `tk.mainloop()`
  10. 在第 34 清除函数
  11. def clear(self):
  12. self.original_language.delete(1.0, END)
  13. self.translated_language.delete(1.0, END)
  14. 将这个
  15. def clear(self):
  16. self.original_language.delete(1.0, END)
  17. self.translated_language delete(1.0, END)
  18. 改为
  19. def clear(self):
  20. self.original_language.delete('0', tk.END)
  21. self.translated_language.delete('0', tk.END)
  22. 使用 `tk` 作为前缀重新编写代码片段
  23. import tkinter as tk
  24. import googletrans
  25. import textblob
  26. from tkinter import ttk, messagebox
  27. class Translate:
  28. def __init__(self):
  29. self.root = tk.Tk()
  30. self.geometry = self.root.geometry('880x500')
  31. def design(self):
  32. text_box = tk.Text(self.root, height=15, width=40)
  33. text_box.grid(row=0, column=0, padx=20, pady=20)
  34. translate_button = tk.Button(self.root, text='Translate', font=('Arial', 20))
  35. translate_button.grid(row=0, column=1, padx=10, pady=20)
  36. translated_text = tk.Text(self.root, height=15, width=40)
  37. translated_text.grid(row=0, column=2, padx=10, pady=20)
  38. self.original_language = ttk.Combobox(self.root, width=50, value=self.language_list)
  39. self.original_language.current(0)
  40. self.original_language.grid(row=1, column=0)
  41. self.translated_language = ttk.Combobox(self.root, width=50, value=self.language_list)
  42. self.translated_language.current(0)
  43. self.translated_language.grid(row=2, column=0)
  44. self.clear_button = tk.Button(self.root, text='Clear', font=('Arial', 18), command=self.clear)
  45. self.clear_button.grid(row=2, column=1)
  46. def clear(self):
  47. self.original_language.delete('0', tk.END)
  48. self.translated_language.delete('0', tk.END)
  49. def language_list(self):
  50. return
  51. # self.root.mainloop()
  52. if __name__ == '__main__':
  53. t1 = Translate()
  54. t1.design()
  55. tk.mainloop()

请注意,代码中提到的函数 self.language_list 并没有提供具体的实现,需要根据需要进行编写。此外,代码中可能有一些错误,需要根据实际情况进行调试和修复。

英文:

Edit: Don't used Wildcard from tkinter import * Why because when you do that, you load all of tkinter's namespace into your module's namespace.

Edit: Forgotten to add function.

Is this what it looks like?

  • Line 23 and 27 should be value=self.language_list.
  • line 24 and 28, the index to zero. Should be
    self.translated_language.current(0)
  • In line 31, shoulde be self.clear
  • In line 41, comment out #self.root.mainloop()
  • Add in line 46, tk.mainloop()

In line 34, clear function:

  1. def clear(self):
  2. self.original_language.delete(1.0,END)
  3. self.translated_language.delete(1.0,END)

Change this:

  1. def clear(self):
  2. self.original_language.delete(1.0,END)
  3. self.translated_language.delete(1.0,END)

to:

  1. def clear(self):
  2. self.original_language.delete('0', tk.END)
  3. self.translated_language.delete('0', tk.END)

Snippet re-work using prefix as tk:

  1. import tkinter as tk
  2. import googletrans
  3. import textblob
  4. from tkinter import ttk, messagebox
  5. class Translate:
  6. def __init__(self):
  7. self.root = tk.Tk()
  8. self.geometry = self.root.geometry('880x500')
  9. def design(self):
  10. text_box = tk.Text(self.root,height=15,width=40)
  11. text_box.grid(row=0,column=0,padx=20,pady=20)
  12. translate_button = tk.Button(self.root,text='Translate',font=('Arial',20))
  13. translate_button.grid(row=0,column=1,padx=10,pady=20)
  14. translated_text = tk.Text(self.root,height=15,width=40)
  15. translated_text.grid(row=0,column=2,padx=10,pady=20)
  16. self.original_language = ttk.Combobox(self.root,width=50,value=self.language_list)
  17. self.original_language.current(0)
  18. self.original_language.grid(row=1,column=0)
  19. self.translated_language = ttk.Combobox(self.root,width=50,value=self.language_list)
  20. self.translated_language.current(0)
  21. self.translated_language.grid(row=2,column=0)
  22. self.clear_button = tk.Button(self.root,text='Clear',font=('Arial',18),command=self.clear)
  23. self.clear_button.grid(row=2,column=1)
  24. def clear(self):
  25. self.original_language.delete('0', END)
  26. self.translated_language.delete('0', END)
  27. def language_list(self):
  28. return
  29. #self.root.mainloop()
  30. if __name__ == '__main__':
  31. t1 = Translate()
  32. t1.design()
  33. tk.mainloop()

Screenshot:

我不能在我的类内部定义一个函数

huangapple
  • 本文由 发表于 2023年3月7日 19:17:47
  • 转载请务必保留本文链接:https://go.coder-hub.com/75661304.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定