我試圖弄清楚如何使用按鈕退出while回圈,僅此而已。
這應該在我的腦海中起作用,但它所做的只是第一次單擊它時,while 回圈開始,然后再單擊幾下,程式就會崩潰。
我認為錯誤出現在“bprev.on_clicked(turn_off)”代碼中,它要么不能按我想要的方式作業,要么可能被“跳過”
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.widgets import Button
import time
onoff = True
fig, ax = plt.subplots()
axprev = fig.add_axes([0.7, 0.05, 0.1, 0.075])
bprev = Button(axprev, 'On/Off')
def turn_on(val):
global onoff
onoff = True
main()
def main():
global onoff
def turn_off(val):
global onoff
onoff = False
while onoff: #main loop
bprev.on_clicked(turn_off)
print("It works ? Probably not.")
time.sleep(0.4)
bprev.on_clicked(turn_on)
plt.show()
uj5u.com熱心網友回復:
您只在單個執行緒上作業,因此您只能在通話結束后與 matplot 的視圖進行互動。但這永遠不會發生,因為它正在運行無限回圈。簡單的解決方案是使用多執行緒。
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.widgets import Button
import time
from threading import Thread
onoff = True
fig, ax = plt.subplots()
axprev = fig.add_axes([0.7, 0.05, 0.1, 0.075])
bprev = Button(axprev, 'On/Off')
def toggle(val):
global onoff
onoff = not onoff
if(onoff == True): Thread(target=main).start()
def main():
global onoff
while onoff: #main loop
print("It works ? Yes.")
time.sleep(0.4)
bprev.on_clicked(toggle)
plt.show()
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/511250.html
