Python 当我在gpiozero库的button语句之后添加代码时,tkinter为什么会导致错误?

Python 当我在gpiozero库的button语句之后添加代码时,tkinter为什么会导致错误?,python,user-interface,tkinter,attributeerror,gpiozero,Python,User Interface,Tkinter,Attributeerror,Gpiozero,我正在制作一个击剑程序,并试图利用tkinter gui库。我的程序的原始代码使用gpiozero库将管脚连接到按钮。这段代码本身工作得非常好,但是当我添加tkinter代码时,如下面的代码段所示(特别是在button语句之后),python shell会抛出一个AttributeError。此外,当我将以“main=Tk()”开头的代码放在button语句之前时,tkinter gui将继续运行并打开gui窗口。最终,我遇到的问题是,出于某种原因,当tkinter相关的代码运行时,防护代码似乎

我正在制作一个击剑程序,并试图利用tkinter gui库。我的程序的原始代码使用gpiozero库将管脚连接到按钮。这段代码本身工作得非常好,但是当我添加tkinter代码时,如下面的代码段所示(特别是在button语句之后),python shell会抛出一个AttributeError。此外,当我将以“main=Tk()”开头的代码放在button语句之前时,tkinter gui将继续运行并打开gui窗口。最终,我遇到的问题是,出于某种原因,当tkinter相关的代码运行时,防护代码似乎受到阻碍,似乎无法运行

from gpiozero import LED, Button
from tkinter import *


left_score = 0
game_left = Button(16) 

main = Tk() 
ourMessage str(left_score) 
messageVar = Label(main, text = ourMessage) 
messageVar.config(anchor = S, bg ="lightgreen", bd = "800”, font = ("Courier”, 70)) 
messageVar.pack()
main.mainloop()
以下是错误:

>>>
Traceback (most recent call last): 
File "/home/pi/fence_tkinter .py”, line 62, in <module>
    game_left = Button(16) 
File "/usr/lib/python3.4/tkinter/__init__.py”, line 2195, in __init__ 
    Widget.__init__(self, master, 'button' , cnf, kw) 
File "/usr/lib/python3.4/tkinter/__init__.py”, line 2118, in __init__ 
    BaseWidget._setup(self, master, cnf) 
File "/usr/lib/python3.4/tkinter/__init__.py”, line 2096, in _setup 
    self. tk = master. tk
AttributeError: 'int' object has no attribute 'tk'
>
回溯(最近一次呼叫最后一次):
文件“/home/pi/fence_tkinter.py”,第62行,在
游戏左=按钮(16)
文件“/usr/lib/python3.4/tkinter/_init__.py”,第2195行,在
小部件。_uu初始化(自身、主控、“按钮”、cnf、kw)
文件“/usr/lib/python3.4/tkinter/_init__.py”,第2118行,在
BaseWidget.\u设置(自、主、cnf)
文件“/usr/lib/python3.4/tkinter/\uuuuu init\uuuuuu.py”,第2096行,在安装程序中
自己tk=主。传统知识
AttributeError:“int”对象没有属性“tk”

因为您正在执行通配符导入,tkinter
按钮将覆盖gpiozero类。这就是为什么不鼓励通配符导入。因为您已经覆盖了gpiozero类,所以您正在将一个整数传递给tkinter
按钮
类,它需要一个小部件

您应该以不同的方式导入tkinter:

from gpiozero import LED, Button
import tkinter as tk

left_score = 0
game_left = Button(16) 

main = tk.Tk() 
ourMessage str(left_score) 
messageVar = tk.Label(main, text = ourMessage) 
messageVar.config(anchor = S, bg ="lightgreen", bd = "800”, font = ("Courier”, 70)) 
messageVar.pack()
main.mainloop()

由于您正在执行通配符导入,tkinter
按钮
类将覆盖gpiozero类。这就是为什么不鼓励通配符导入。因为您已经覆盖了gpiozero类,所以您正在将一个整数传递给tkinter
按钮
类,它需要一个小部件

您应该以不同的方式导入tkinter:

from gpiozero import LED, Button
import tkinter as tk

left_score = 0
game_left = Button(16) 

main = tk.Tk() 
ourMessage str(left_score) 
messageVar = tk.Label(main, text = ourMessage) 
messageVar.config(anchor = S, bg ="lightgreen", bd = "800”, font = ("Courier”, 70)) 
messageVar.pack()
main.mainloop()