擅长:python、mysql、java
<p><code>tkinter</code>应用程序需要调用<code>.mainloop()</code></p>
<p>您还应该使用<code>.after(...)</code>函数来模拟while循环:</p>
<pre><code>import tkinter as tk
import RPi.GPIO as GPIO
def led_on(state):
global button_pressed
button_pressed = state
def blink_led(state=True):
# turn on LED if either state or button_pressed is True
GPIO.output(8, state or button_pressed)
master.after(500, blink_led, not state) # toggle the state half a second later
# setup the RPi board
GPIO.setmode(GPIO.BOARD)
GPIO.setup(8, GPIO.OUT)
GPIO.output(8, False)
button_pressed = False
master = tk.Tk()
w = tk.Button(master, text='Turn on light')
w.pack()
w.bind('<ButtonPress-1>', lambda e: led_on(True)) # set button_pressed to True
w.bind('<ButtonRelease-1>', lambda e: led_on(False)) # set button_pressed to False
blink_led() # start the LED blinking
master.mainloop()
</code></pre>