Вывести разные записи в одну строку (listbox, tkinter) - PullRequest
0 голосов
/ 11 марта 2019

Я пытаюсь создать планировщик, в котором пользователь вводит свою дату, время и свой план и хочет, чтобы они печатались в одну строку, но я получаю ошибки, и это не работает.

Я не очень уверен насчет использования классов, если это правильно или неправильно, но это вывод, который я хочу получить, где он отформатирован таким образом.

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.

1 Ответ

0 голосов
/ 11 марта 2019

Я вижу несколько ошибок в вашем коде, и я тоже новичок.Я не знаю, tkinter, поэтому я не могу дать полный ответ (лучше, чтобы вы скопировали его от кого-то, кто имеет это право в любом случае).Но, надеюсь, я могу дать вам несколько советов: - Ваш импорт сумасшедший.Сначала вы импортируете tkinter, чтобы вы могли использовать его имя, затем вы импортируете из него одну единственную вещь, затем вы импортируете ее еще раз, импортируя все из tkinter, и, как последний, импортируете tkinter как tk, так что вы можете использовать tk в качестве ярлыка дляTkinter.- класс должен быть с паретезами, поэтому class planner_start(): - использовать регулярный интервал, код легче читать - self возвращает теперь кортеж, одна из причин, по которой он не работает - course_save () должен быть либо с блоком отступа и (self),поэтому он принадлежит классу, или вызов внутри него должен выглядеть примерно так: planner_start.planner_save(a) Я посмотрел внизу, time_entry.get нужны скобки.

Надеюсь, это поможет хотя бы немного.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...