如何使此python代码在raspberry pi上运行

如何使此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

我写了这段代码,它使用PyCharm在我的windows pc上完美运行。 当我使用默认解释器从我的raspberry pi 2运行它时,它的行为很奇怪——按钮并不总是响应,并且alarmList数组不能在命令上正确打印

以前有人有过这个问题吗

代码:

导入时间
从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()