将不同的条目打印到一行(listbox,tkinter)

问题描述 投票:0回答:1

我正在尝试创建一个计划器,在用户输入他们的日期,时间和他们的计划,并希望他们打印成一行,但我收到错误,它不起作用。

如果它是正确或错误的话,我不太确定如何使用类,但这是我想要实现的输出,它的格式是这样的。

import tkinter
from tkinter import ttk
from tkinter import *
import tkinter as tk

class planner_start:
    kind='plan'
    def __init__(self,plan,time,date):
        self.plan = plan
        self.time=time
        self.date=date

def planner_save(self):
    return"March {} 2019: {}- {}".format(self.date,self.time,self.plan)

def course_save():
    listbox.insert(tk.END, planner_save(a))


def get_list(event):
    # get selected line index
    index = listbox.curselection()[0]
    # get the line's text
    seltext = listbox.get(index)
    # delete previous text in enter1
    enter.delete(0, 50)
    # now display the selected text
    enter.insert(0, seltext)


def delete_item():
    try:
        index = listbox.curselection()[0]
        listbox.delete(index)
    except IndexError:
        pass
def save_list():
    # get a list of listbox lines
    temp_list = list(listbox.get(0, tk.END))
    # add a trailing newline char to each line
    temp_list = [chem + '\n' for chem in temp_list]
    # give the file a different name
    fout = open("courselist.txt", "w")
    fout.writelines(temp_list)
    fout.close()

    exit()
def set_list(event):
    try:
        index = listbox.curselection()[0]
        # delete old listbox line
        listbox.delete(index)
    except IndexError:
        index = tk.END
    # insert edited item back into listbox1 at index
    listbox.insert(index, enter.get())
def quit_code():
    exit()

window = tkinter.Tk()
window.title("Calendar Planner")
window.configure(background='#ABD1B5')
window.geometry("720x360")


title=tkinter.Label(window,text='Calendar Planner', fg="#054A29", bg="#5BBA6F",
                    font=("American Captain", 24))
title.config(width=100)
title.grid(row=0)
title.place(relx=.5, rely=.1, anchor="center")
title.grid_propagate(False)


title=tkinter.Label(window,text='Your plans for this month', fg="#054A29", bg="#5BBA6F",
                    font=("American Captain", 18))
title.config(width=24)
title.grid(row=0)
title.place(relx=.3, rely=.23, anchor="center")
title.grid_propagate(False)

listbox = Listbox(window)
listbox.pack()
listbox.config(width=50)
listbox.grid(row=0)
listbox.place(relx=.1,rely=.5,anchor="w")


#Enter Date
date_input = ttk.Label(window,text='Enter Date',background='#355834', font=("Market Deco",12),
                     foreground='#FFFFFF', width=15, anchor='center')
date_input.grid(row=2,column=2, padx=5)
date_input.place(relx=.73, rely=.37, anchor="e")

dateName = tkinter.StringVar()
date_entry = ttk.Entry(window, width=15, textvariable = dateName)
date_entry.grid(row=2, column=1)
date_entry.place(relx=.88, rely=.37, anchor='e')

#Enter Time
time_input = ttk.Label(window,text='Enter Time',background='#355834', font=("Market Deco",12),
                     foreground='#FFFFFF', width=15, anchor='center')
time_input.grid(row=4,column=2, padx=5)
time_input.place(relx=.73, rely=.47, anchor="e")

timeName = tkinter.StringVar()
time_entry = ttk.Entry(window, width=15, textvariable = timeName)
time_entry.grid(row=4, column=1)
time_entry.place(relx=.88, rely=.47, anchor='e')

#Enter Plan
plan_input = ttk.Label(window,text='Enter Plan',background='#355834', font=("Market Deco",12),
                     foreground='#FFFFFF', width=15, anchor='center')
plan_input.grid(row=4,column=2, padx=5)
plan_input.place(relx=.73, rely=.57, anchor="e")

planName = tkinter.StringVar()
plan_entry = ttk.Entry(window, width=15, textvariable = planName)
plan_entry.grid(row=4, column=1)
plan_entry.place(relx=.88, rely=.57, anchor='e')


#Button for course
btn = ttk.Button(window, text='Add Plan', command=course_save)
btn.grid(row=2, columnspan=2)
btn.place(relx=.72, rely=.67, anchor='center')

#Button quit
btn = ttk.Button(window, text='Exit', command=quit_code)
btn.grid(row=2, columnspan=2)
btn.place(relx=.9, rely=.9, anchor='center')

#Button delete
button4 = tk.Button(window, text='Delete selected line     ', command=delete_item)
button4.grid(row=2, columnspan=2)
button4.place(relx=.2, rely=.9, anchor='center')

#Button save
button2 = tk.Button(window, text='Save lines to file', command=save_list)
button2.grid(row=2, columnspan=2)
button2.place(relx=.4, rely=.9, anchor='center')

enter = tk.Entry(window, width=45, bg='yellow')
enter.insert(0, 'Click on a plan to edit then press enter to update')
enter.grid(row=1, columnspan=2)
enter.place(relx=.3, rely=.77, anchor='center')
# pressing the return key will update edited line
enter.bind('<Return>', set_list)
# or double click left mouse button to update line

listbox.bind('<ButtonRelease-1>', get_list)


a=(date_entry.get(),time_entry.get,plan_entry.get())
window.mainloop()

这是我上面的代码。请帮帮我,因为我是python的新手。

python tkinter
1个回答
0
投票

我可以在你的代码中看到多个错误,而且我也是一个乞丐。我不知道tkinter,所以我无法给出完整的答案(最好是从那些正确的人那里复制它)。但希望我能给你一些提示: - 你的导入很疯狂。首先导入tkinter以便您可以使用它的名称,然后从中导入一个东西,然后通过从tkinter导入所有内容再次导入它,并将最后一个导入tkinter作为tk,这样您就可以使用tk作为快捷方式Tkinter的。 - 类应该是paretheses,所以class planner_start(): - 使用常规间距,代码更容易阅读 - 自我现在返回一个元组,其中一个原因是它不工作 - course_save()应该是缩进块和(self),所以它属于一个类,或者在它内部调用应该像planner_start.planner_save(a)我看了一下底部,time_entry.get需要括号。

我希望它至少有一点帮助。

© www.soinside.com 2019 - 2024. All rights reserved.