【发布时间】:2018-03-02 15:39:46
【问题描述】:
我正在运行一个基本的 hex2dec 转换器,并希望将其从控制台转换为 GUI。
现在程序在控制台中运行良好,但是在我转换为 GUI 之后,它似乎抛出了 int() can't convert non-string with explicit base 错误。
这是图形用户界面代码
from tkinter import *
root = Tk()
root.geometry("400x400+250+250")
root.title("Hex Converter")
heading = Label(root, text="Simple Hex to Decimal Converter", font=('arial 15 bold'), fg="steelblue").pack()
entr_hex_val = Label(root, text="Enter Hex Value to Convert", font=('arial 13 bold')).place(x=10, y=50)
my_num = IntVar()
ent_box = Entry(root, width=50, textvariable=my_num).place(x=10, y=90)
def converter():
hexdec = my_num.get()
dec = int(hexdec, 16)
lab = Label(root, text=("decimal value = "+ str(dec)), font=('arial 25 bold'), fg="red").place(x=10, y=200)
conv = Button(root, text="Convert", width=12, height=2, bg="lightgreen", command=converter).place(x=10, y=130)
root.mainloop()
和控制台代码
import os
def hexconverter:
os.system('cls')
hexdec = input("Enter number in Hexadecimal Format: ")
dec = int(hexdec, 16)
print(str(dec))
hexconverter()
我很难理解为什么相同的代码在控制台中有效,但在 GUI 中无效。
【问题讨论】:
-
my_num = IntVar(): 这可能意味着my_num.get()返回一个int,而不是一个字符串。 -
谢谢,我一定是瞎了眼,把它改成 StringVar 解决了这个问题,我不得不从 + str(dec)) 中删除 str,现在工作正常。从美学的角度来看,唯一的问题是标签末尾显示的值显示为 {Decimal value = } 只是在徘徊为什么花括号在那里。但感谢您的快速响应
-
@DavidM 这个给定的代码不应该有任何花括号。也许您尝试了一些字符串格式并在周围放置了额外的花括号?
标签: python python-3.x tkinter