如何使此python代码在raspberry pi上运行
我写了这段代码,它使用PyCharm在我的windows pc上完美运行。 当我使用默认解释器从我的raspberry pi 2运行它时,它的行为很奇怪——按钮并不总是响应,并且alarmList数组不能在命令上正确打印 以前有人有过这个问题吗 代码:如何使此python代码在raspberry pi上运行,python,linux,tkinter,raspberry-pi,pycharm,Python,Linux,Tkinter,Raspberry Pi,Pycharm,我写了这段代码,它使用PyCharm在我的windows pc上完美运行。 当我使用默认解释器从我的raspberry pi 2运行它时,它的行为很奇怪——按钮并不总是响应,并且alarmList数组不能在命令上正确打印 以前有人有过这个问题吗 代码: 导入时间 从Tkinter进口* 导入tkMessageBox date=[time.strftime(“%Y”、time.localtime(time.time())、time.strftime(“%m”、time.localtime(time
导入时间
从Tkinter进口*
导入tkMessageBox
date=[time.strftime(“%Y”、time.localtime(time.time())、time.strftime(“%m”、time.localtime(time.time())、time.strftime(“%d”、time.localtime(time.time())、time.strftime(“%H”、time.localtime(time.time())、time.strftime(“%m”、time.localtime(time.time())、time.strftime(“%S”、time.localtime()))]
main=Tk()
main.overrideredirect(True)
main.grid\u column配置(0,权重=3)
main.grid_row配置(0,权重=3)
几何体(“{0}x{1}+0+0.”格式(main.winfo_screenwidth(),main.winfo_screenheight())
AlarmList=[]
def setAlarm():
def提交_报警():
get\u alarm=[int(报警时间\条目.get())、int(报警时间\条目.get())]
报警小时记录。删除(0,结束)
报警\分钟\条目。删除(0,结束)
如果get_alarm[0]>0,get_alarm[0]<23,get_alarm[1]>=0,get_alarm[1]<59:
AlarmList.append(获取报警)
AlarmList.sort()
其他:
showinfo(“无效时间”,“请输入有效时间,你这个该死的混蛋”)
打印报警列表
报警设置=Tk()
#报警设置。配置(bg='white')
报警设置覆盖直接(真)
alarm_set.geometry(“{0}x{1}+0+0.”格式(alarm_set.winfo_screenwidth(),alarm_set.winfo_screenheight())
报警时间标签=标签(报警设置,text=“报警时间:”)
报警时间输入=输入(报警设置)
报警时间标签网格(行=0,列=0)
报警\u小时\u条目.grid(行=0,列=1)
报警分钟标签=标签(报警设置,text=“报警分钟:”)
报警\分钟\输入=输入(报警\设置)
报警\分钟\标签网格(行=1,列=0)
报警\分钟\条目.grid(行=1,列=1)
提交按钮=按钮(报警设置,文本='submit',命令=提交报警)
提交按钮网格(行=2,列=1)
退出报警=按钮(报警设置,text=“返回菜单”,命令=报警设置。销毁)
退出报警网格(行=2,列=0)
报警设置mainloop()
def tick():
全球时间1
#从电脑获取当前的本地时间
time2=time.strftime(“%H:%M:%S”)
#如果时间字符串已更改,请更新它
如果时间2!=时间1:
时间1=时间2
clock.config(text=time2)
#每200毫秒调用一次
#根据需要更新时间显示
#可能需要>200毫秒,但显示器会抖动
时钟。之后(200,滴答声)
button1=按钮(text='Set Alarm',font=('times',15',bold'),command=setAlarm,bd=0,padx=2,pady=2)
button1.config(高度=10,宽度=50)
按钮1.网格(行=0,列=0,粘性=W)
退出按钮(main,text='quit',font=('times',15',bold'),command=main.destroy,bd=0,padx=30,pady=2)
#退出主配置(高度=10,宽度=20)
退出main.grid(行=3,列=0,粘性=W)
时间1=''
时钟=标签(主,字体=('times',100,'bold'),背景为蓝色,前景为白色)
clock.grid(行=1,列span=2,粘性=N)
设置\u photo=PhotoImage(file=“settings.gif”)
设置=按钮(图像=设置\照片,bd=0)
设置网格(行=3,列=1)
勾选()
main.mainloop()
您电脑上的python版本与rasberry pi上的python版本相同吗?令人惊讶的是,它居然能正常工作。您正在创建多个Tk
实例,并且多次调用mainloop
。一般来说,您应该只有一个Tk
实例。我建议您在调试任何其他问题之前解决该问题。
import time
from Tkinter import *
import tkMessageBox
date = [time.strftime('%Y', time.localtime(time.time())), time.strftime('%m', time.localtime(time.time())), time.strftime('%d', time.localtime(time.time())), time.strftime('%H', time.localtime(time.time())), time.strftime('%M', time.localtime(time.time())), time.strftime('%S', time.localtime(time.time()))]
main = Tk()
main.overrideredirect(True)
main.grid_columnconfigure(0, weight=3)
main.grid_rowconfigure(0, weight=3)
main.geometry("{0}x{1}+0+0".format(main.winfo_screenwidth(), main.winfo_screenheight()))
AlarmList = []
def setAlarm():
def submit_alarm():
get_alarm = [int(alarm_hour_entry.get()), int(alarm_minute_entry.get())]
alarm_hour_entry.delete(0, END)
alarm_minute_entry.delete(0, END)
if get_alarm[0] > 0 and get_alarm[0] < 23 and get_alarm[1] >= 0 and get_alarm[1] < 59:
AlarmList.append(get_alarm)
AlarmList.sort()
else:
tkMessageBox.showinfo("Invalid Time", "please enter a valid time, you fucking douchebag")
print AlarmList
alarm_set = Tk()
# alarm_set.configure(bg='white')
alarm_set.overrideredirect(True)
alarm_set.geometry("{0}x{1}+0+0".format(alarm_set.winfo_screenwidth(), alarm_set.winfo_screenheight()))
alarm_hour_label = Label(alarm_set, text="Alarm Hour:")
alarm_hour_entry = Entry(alarm_set)
alarm_hour_label.grid(row=0, column=0)
alarm_hour_entry.grid(row=0, column=1)
alarm_minute_label = Label(alarm_set, text="Alarm Minute:")
alarm_minute_entry = Entry(alarm_set)
alarm_minute_label.grid(row=1, column=0)
alarm_minute_entry.grid(row=1, column=1)
submit_button = Button(alarm_set, text='submit', command=submit_alarm)
submit_button.grid(row=2, column=1)
quit_alarm = Button(alarm_set, text="back to menu", command=alarm_set.destroy)
quit_alarm.grid(row=2, column=0)
alarm_set.mainloop()
def tick():
global time1
# get the current local time from the PC
time2 = time.strftime('%H:%M:%S')
# if time string has changed, update it
if time2 != time1:
time1 = time2
clock.config(text=time2)
# calls itself every 200 milliseconds
# to update the time display as needed
# could use >200 ms, but display gets jerky
clock.after(200, tick)
button1=Button(text='Set Alarm', font=('times', 15, 'bold'), command=setAlarm, bd=0, padx=2, pady=2)
button1.config(height=10, width=50)
button1.grid(row=0, column=0, sticky=W)
quit_main=Button(main, text='quit', font=('times', 15, 'bold'), command=main.destroy, bd=0, padx=30, pady=2)
#quit_main.configure(height=10, width=20)
quit_main.grid(row=3, column=0, sticky=W)
time1 = ''
clock = Label(main, font=('times', 100, 'bold'), bg='blue', fg='white')
clock.grid(row=1, columnspan=2, sticky=N)
settings_photo=PhotoImage(file="settings.gif")
settings=Button(image=settings_photo,bd=0)
settings.grid(row=3, column=1)
tick()
main.mainloop()