Я получаю ValueError: формат strftime заканчивается на raw% для root.clipboard_append (d.strftime ("% I:% M% p" + процент + "%")) - PullRequest
0 голосов
/ 24 января 2019

Я сделал этот скрипт для отслеживания моего текущего времени и текущего процента заряда батареи (а затем добавляю его в буфер обмена, чтобы я мог вставить его куда-нибудь):

from tkinter import *
from urllib import parse
from tkinter import Tk
import tkinter.ttk as ttk
from datetime import datetime
import psutil


root = Tk() 
root.title("Current Time")
root.geometry('250x57+1000+103')

lbl = Label(root, text="Time")
lbl.pack()

def clicked():

    d = datetime.now()
    print(d.strftime("%I:%M"))

    battery = psutil.sensors_battery()
    plugged = battery.power_plugged
    percent = str(battery.percent)
    print(percent+'%')


    root.clipboard_clear()
    root.clipboard_append(d.strftime(percent+"%" + "%I:%M %p"))
    lbl.configure(text= d.strftime(percent+"%" + "%I:%M %p"))

style = ttk.Style(root)
style.theme_use('clam')
style.configure('TButton', bordercolor="black")

btn = ttk.Button(root, text='Show Current Time', style='TButton', command=clicked, width = 37)
btn.pack()

root.wm_attributes("-topmost", 1)
root.mainloop()

Я хочу вывести его так: «Часы:Минутный процент заряда батареи "=" 12:25 PM 94% "

Проблема в том, что если я напишу код, подобный этому:

root.clipboard_append(d.strftime("%I:%M %p" + percent+"%"))
lbl.configure(text= d.strftime("%I:%M %p" + percent+"%"))

... Я получу ValueError: формат strftime заканчивается необработанным% (не уверен почему)

Но если он написан так:

root.clipboard_append(d.strftime(percent+"%" "%I:%M %p"))
lbl.configure(text= d.strftime(percent+"%" "%I:%M %p"))

... Я не получу никакой ошибки, но проблема в том, что это выглядит странно (часовая часть будет просто буквой "I").И даже если я вставлю его куда-нибудь, это будет выглядеть так: «95% I: 25 PM» (это должно быть «95% 12:25 PM»)

1 Ответ

0 голосов
/ 24 января 2019

Вам просто нужно обработать конкатенацию строк вне datetime.strftime(...). Например:

from datetime import datetime

p = 95
d = datetime.now()
s = '{} {}%'.format(d.strftime('%I:%M %p'), p)
print(s)
# OUTPUT
# 05:02 AM 95%
...