Python 消息发送程序中的错误

Python 消息发送程序中的错误,python,python-2.7,user-interface,tkinter,Python,Python 2.7,User Interface,Tkinter,我只是在试验一个只在一台计算机上运行的消息传递程序。好的,问题是:如果我以用户身份登录并向另一个用户发送消息,即使我登录到消息接收用户,也不会有消息,这表示没有消息。请帮帮我。您也可以给出自己的建议和简化代码的方法 import Tkinter as tk import sys import tkMessageBox import csv accounts = dict() messages = [] messagerec = [] messagesen = [] csvpath = "C

我只是在试验一个只在一台计算机上运行的消息传递程序。好的,问题是:如果我以用户身份登录并向另一个用户发送消息,即使我登录到消息接收用户,也不会有消息,这表示没有消息。请帮帮我。您也可以给出自己的建议和简化代码的方法

import Tkinter as tk
import sys
import tkMessageBox
import csv


accounts = dict()
messages = []
messagerec = []
messagesen = []

csvpath = "C:/Users/user1/Desktop/abc.csv"
csvreader = csv.reader(open(csvpath))

for y, z in csvreader:
    accounts[y] = z

def GetUser():
    user = userid.get()
    return user

def GetPass():
    password = passid.get()
    return password

def SignUp():
    def signupgo():
        newuser = newuserid.get()
        newpass = newpassid.get()
        if newuser in accounts:
            tkMessageBox.showerror("Username Taken", 'Sorry! The username you have requested has already been taken. Please try another username.' [2])
        else:
            accounts[newuser] = newpass
            tkMessageBox.showinfo("Account Created", 'Congratulations! Your account has been created' [2])
    newuserid = tk.StringVar()
    newpassid = tk.StringVar()
    SignUpWin = tk.Tk()
    NewUserLabel = tk.Label(SignUpWin, text="New Username: ").pack()
    NewUserInput = tk.Entry(SignUpWin,textvariable=newuserid).pack()
    NewPassLabel = tk.Label(SignUpWin, text="New Password: ").pack()
    NewPassInput = tk.Entry(SignUpWin, textvariable=newpassid).pack()

    CreateAccount = tk.Button(SignUpWin, text="Create Account", command=signupgo).pack()

def logingo():
    user = GetUser()
    password = GetPass()
    if user in accounts:
        if accounts[user] == password:
            LoggedIn(user)
        elif accounts[user] != password:
            tkMessageBox.showerror("Wrong Password", 'Try Again! You have entered the wrong password.')
    elif user not in accounts:
        tkMessageBox.showerror("User not existing", 'Try Again or Create an account! The username you have provided is not existing.')

def LoggedIn(user):
    def MessageButtonClick():
        if tkMessageBox.askquestion('Compose or Inbox?', 'Do you want to access your inbox(Yes) or compose a new message(No)?') == 'yes':
            OpenInbox(user)
        else:
            MessageSender(user)
消息发送部分从这里开始

def MessageSender(user):
        messagerecvar = tk.StringVar()
        messagecontentvar = tk.StringVar()
        messagesenderwin = tk.Tk()
        messagereclabel = tk.Label(messagesenderwin, text="Receiver:").pack()
        messagerecinput = tk.Entry(messagesenderwin, textvariable=messagerecvar).pack()
        messagecontentlabel = tk.Label(messagesenderwin, text="Content:").pack()
        messagecontentinput = tk.Entry(messagesenderwin, textvariable=messagecontentvar).pack()
        messagecontent = messagecontentvar.get()
        messagerec = messagerecvar.get()
        messagesendgobutton = tk.Button(messagesenderwin, text='Send Message', command=lambda:sendmessagego(messagecontent, user, messagerec)).pack()
    def sendmessagego(content, sender, receiver):
        messages.append(content)
        messageno = len(messages)
        messagerec.append(receiver)
        messagesen.append(sender)
        tkMessageBox.showinfo("Message Sent", 'Your message has been sent.')
    def OpenInbox(user):
        if 'a' in messagerec:
            lenmess = messagerec.index(user)
            tkMessageBox.showinfo('Message from '+messagesen[lenmess], 'Message from '+messagesen[lenmess]+': '+messages[lenmess])
        elif user not in messagerec:
            tkMessageBox.showinfo('No Messages', 'Sorry, no messages were found')
    loggedinwin = tk.Tk()
    tkMessageBox.showinfo("Welcome", 'Hello, '+user)
    HomeLabel = tk.Label(loggedinwin, text="Home").pack()
    MessageMenuButton = tk.Button(loggedinwin, text="Messaging", command=MessageButtonClick).pack()


maingui = tk.Tk()

userid = tk.StringVar()
passid = tk.StringVar()


UserEnterLabel = tk.Label(maingui, text="Username: ").pack()
UserInput = tk.Entry(maingui, textvariable=userid).pack()
PassEnterLabel = tk.Label(maingui, text="Password: ").pack()
PassInput = tk.Entry(maingui, textvariable=passid).pack()

LoginGo = tk.Button(maingui, text="Login", command=logingo).pack()

SignUpGo = tk.Button(maingui, text="Sign Up", command=SignUp).pack()


maingui.mainloop()

第一个问题是您正在创建多个Tk实例。Tkinter不是设计成这样的,它会产生意想不到的结果。如果您需要多个窗口,您需要创建Toplevel的实例,如果您向我们展示一个获取错误的窗口,包括输入、预期和实际输出,以及任何警告或错误消息(包括编译器警告),用户将更愿意并能够提供帮助。采取行动,阅读,把自己放在读者的位置上。你提供了足够的信息吗?你问的清楚吗?对不起,下次我会照你说的做。当它不起作用时,我非常生气,以至于我忘了做所有这些。我做了,但仍然存在同样的问题。你能帮我解决这个问题吗?