我是编程新手,如果这是一个显而易见的错误,我深表歉意。 我正在运行Windows 10 64bit的计算机上使用python 3.7.4(带有Thonny和/ IDLE)在tkinter上编写GUI。
我正在尝试第一次编写GUI,但遇到以下问题:
我编写了一个程序,以在c驱动器上查找任何给定的文档,打开/读取文本,计算字符数,然后显示结果。 只要我使用tkinter框架小部件,此方法就可以正常工作,但是框架小部件不允许使用滚动条(我看到了一些解决方案,这些问题就在我头上),因此我决定使用文本小部件。一行:
label2["text"] = a,"+", b, "+", c, "+", d, "=" , e
由于某种原因而无法使用,而且由于我不明白为什么它首先会起作用,所以我不确定为什么现在不起作用。
为了进行一些测试,我创建了一个稍微容易一些的代码来测试相同的问题:
import tkinter as tk
import random as rd
def fun9(d):
a= rd.randint(1,10)
b= rd.randint(1,10)
c= rd.randint(1,10)
#d= int(entry.get())
e=a+b+c+d
#label2["text"] = a,"+", b, "+", c, "+", d, "=" , e ### <-
#label2.config(text = (a,"+", b, "+", c, "+", d, "=" , e))
print(a,"+", b, "+", c, "+", d, "=" , e)
return a,"+", b, "+", c, "+", d, "=" , e
root = tk.Tk() # root window?? -> opens window
root.geometry("%dx%d" % (800, 800))
# now write all functions
canvas = tk.Canvas(root) # create canvas for button
canvas.pack()
frame1 = tk.Frame(root, bg="#99ceff", bd=5)
frame1.place(relx=0.125, rely=0, relwidth=0.75, relheight=0.3)
label = tk.Label(frame1, font=20, text="here a, b, c and d are added: ")
label.place(relheight=1, relwidth=1)
frame2 = tk.Frame(root, bg="#99ceff", bd=5)
frame2.place(relx=0.5, rely=0.32, relwidth=0.75, relheight=0.1, anchor="n")
entry=tk.Entry(frame2, font=40, bd=5)# puts entry in frame instead of root
entry.place(relwidth=0.65, relheight=1)
button = tk.Button(root, text="Search and Display", bg="lightblue", font=40, command=lambda: fun9(int(entry.get()))) # creates button
button.place(relx=0.62, rely=0.32, relheight=0.1, relwidth=0.25) # places button in window
frame3 = tk.Frame(root, bg="#99ceff", bd=5)
frame3.place(relx=0.125, rely=0.45, relwidth=0.75, relheight=0.4)
#label2 = tk.Label(frame3, font=20)
#label2.place(relheight=1, relwidth=1)
label2 = tk.Text(frame3, font=20)
label2.pack()
label2.insert("1.0", fun9(int(entry.get())))
#label2.config(state="disabled")
root.mainloop()
错误消息显示为:
ValueError: invalid literal for int() with base 10: ''
据我所知,该行中的输入
label2.insert("1.0", fun9(int(entry.get())))
不获取输入值,我真的不明白为什么。我已经尝试解决了过去3天的问题,并且在这里和其他地方都读了几个小时,但找不到答案(或者至少我没有一个答案)。
非常感谢您的帮助,非常感谢
JD
ps:单击该按钮将允许程序在命令提示符中执行其工作,而不仅仅是在gui框架中(显然忽略了文本小部件)
答案 0 :(得分:0)
正在发生的一个核心问题是fun9()返回一个元组,然后您尝试将该元组转换为int类型(第68行)。
答案 1 :(得分:0)
这是我从一个朋友那里得到的答案,他是软件开发人员,所以我对此不以为然!仍然也许这会在将来对其他人有所帮助,这就是为什么我在这里发布它:
df %>%
left_join(df2, by = "R") %>%
filter(lubridate::dmy(D) >= lubridate::dmy(DD) & lubridate::dmy(D) <= lubridate::dmy(DF)) %>%
group_by(R,D) %>%
filter(PDF2 == min(PDF2)) %>%
ungroup()