python - Python3 将字符串单词从 Combobox 转换为 int 值
问题描述
无论如何要将 int 值转换或分配给字符串?
如果我使用这一行,self.months = [1,2,3,4,5,6,7,8,9,10,11,12] 程序获取年和月并将值返回到组合框。但是,如果我将self.month中的 int 值替换为下面代码中的字符串,它会抱怨它需要 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()
解决方案
第一的; 您正在使用 anIntVar()
与mon
组合框中的值相关联。这将引发异常,因为内容是字符串。将变量更改为StringVar()
函数中的__init__()
。
self.month = StringVar()
第二; 您尝试使用组合框中的字符串访问日历mon
。这将引发异常,因为日历只接受整数。下面是如何从组合框中获取整数的示例:在月份列表中找到月份字符串的索引,然后添加一个,因为列表索引从 0 开始。
def getcal(self):
m = self.months.index(self.month.get()) + 1
推荐阅读
- python - 使用 CSV 的第二列按升序排序?
- netty - Netty ctx.executor().scheduleAtFixedRate 任务在通道关闭时也可以工作
- android-layout - Android多屏指南
- java - 我如何发送带有 groovy 错误的电子邮件(com.sun.mail.smtp.SMTPSendFailedException: 530-5.5.1 Authentication Required。了解更多信息)
- azure-ad-b2c - 根据扩展属性阻止/拒绝用户登录
- javascript - 在按钮单击时附加 JSON 值
- debian - 在 Debian 之外构建轮子
- javascript - JS 粒子注入 param :id (在本地显示,不在 Heroku 生产中)
- tsql - TSQL:为表 IDENTITY 列设置起始编号
- python - Keras 函数式 API 多输入 LSTM