Python3 конвертирует строковые слова из Combobox в значение int - PullRequest
0 голосов
/ 18 сентября 2018

Есть ли способ преобразовать или присвоить значение int для строк?

, если я использую эту строку, self.months = [1,2,3,4,5,6,7,8, 9,10,11,12] программа получает год и месяц и возвращает значение в выпадающий список.Но если я заменим значение int в self.month на строку, как в приведенном ниже коде, он будет жаловаться, что хочет int.насколько я понимаю . values ​​ Указывает список значений для отображения в раскрывающемся меню, а listbox.textvariabl указывает имя, значение которого связано со значением виджета.

from tkinter import *
import calendar
from tkinter import ttk
class main:


    def __init__(self,master):
        self.master = master
        self.month = IntVar()
        self.year = IntVar()
        self.months = ["Jan","Feb","Mars","April","Maj","Jun","Juli","Aug","Sept","Okt","Nov","Dec"]
        print(self.months)
        self.years = (2014,2015,2016,2017,2018,2019,2020)
        self.widgets()


    def widgets(self):
        Label(self.master,text="Kalender",font =("freesansbold",30),bd=10).pack()
        f = Frame(self.master,pady=10,padx=10)

        Label(f,text="Year",font =("freesansbold",12)).grid(row=0,column=0)
        Label(f,text='Month',font =("freesansbold",12)).grid(row=0,column=3,)

        year = ttk.Combobox(f,width=7,font =("freesansbold",12),values = self.years,textvariable = self.year)
        year.grid(row=0,column=2)
        year.current(4)

        mon = ttk.Combobox(f,width=7,font =("freesansbold",12),values = self.months,textvariable = self.month)
        mon.grid(row=0,column=4)
        mon.current(0)
        f.pack()

        self.area = Text(self.master,width=30,height=10,bd=5,font =("freesansbold",12))
        self.area.pack()
        Button(self.master,text="Get Kalender",font=("freesansbold",12),command=self.getcal).pack()

    def getcal(self):
        m = self.month.get()
        y = self.year.get()
        cal = calendar.month(y,m,1,2)
        self.area.delete(0.0,END)
        self.area.insert(0.0,cal)




root = Tk()
main(root)
root.title("just som stuff 1.0")
root.geometry('{}x{}'.format(460, 350))
root.mainloop()

1 Ответ

0 голосов
/ 18 сентября 2018

Во-первых;вы используете IntVar() для связи со значением в mon выпадающем списке.Это вызовет исключение, поскольку содержимое является строкой.Измените переменную на StringVar() в функции __init__().

self.month = StringVar()

Секунда;вы пытаетесь получить доступ к календарю с помощью строки из mon в выпадающем списке.Это вызовет исключение, потому что календарь принимает только целые числа.Ниже приведен пример того, как получить целое число из выпадающего списка: найдите индекс строки месяца в списке месяцев, затем добавьте его, потому что индекс списка начинается с 0.

def getcal(self):
    m = self.months.index(self.month.get()) + 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...