尝试使用类创建GUI,我一直遇到此错误的问题.我不确定这意味着什么,因为我只能看到一个班级,我的错误是:
Traceback (most recent call last):
File "C:/Users/Blaine/Desktop/Computing Project.py", line 5, in <module>
class SneakerSeeker(tk,Frame):
TypeError: metaclass conflict: the metaclass of a derived class must be a
(non-strict) subclass of the metaclasses of all its bases
我的代码是:
from tkinter import *
import tkinter as tk
import tkinter.messagebox as tm
class Number1(tk,Frame):
def __init__(self, master):
super(Number1, self).__init__()
self.master = master
self.frame = tk.Frame(self.master)
self.TopTitle = Label("Number1", font = ('Calibri ', 16))
self.TopTitle.pack()
def main():
root = tk.Tk()
root.title("Number 1")
app = Number1(root)
root.mainloop()
if __name__ == '__main__':
main()
最佳答案 我想评论你,但有很多话要说:
>首先,摆脱tkinter import *并将import tkinter改为tk(正如Bryan在这里写过多次).除此之外,在同一个应用程序中,从tkinter import *和import tkinter编码为tk的目的是什么?执行此操作时,所有窗口小部件类必须以tk(tk.Label(…),tk.Frame(…)…)开头.
>在Number1(tk,Frame)类中,您应该编写tk.Frame(如果保持导入,则只需要Frame)
>你在super(Number1,self).__ init __()中使用了不必要的super().请在这里阅读布莱恩的答案:Best way to structure a tkinter application,并用这一行替换该行:tk.Frame .__ init __(self,master)(将来考虑Python’s Super is nifty, but you can’t use it)
>关于这一行:self.TopTitle = Label(“Number1”,font =(‘Calibri’,16)):传递给tk.Label()的第一个选项(以及你将创建的任何其他小部件)是父窗口小部件:在你的情况下,self.master
>我发现2行与self.TopTitle无用,我不明白你想用它们实现什么(此外,你不应该用那个方式命名那个标签;如果你想加入Python教派,请尊重PEP 8)