iPython: 如何从用户获取 3 个变量

iPython: How to get 3 variables from user

我有问题。我必须编写程序,检查给定的 DAY、MONTH、YEAR 是星期几。

我定义了一个函数 'dayoftheweek' 来查找给定日期的星期几。 但这是我的问题。我不知道如何使用 GUI 从用户那里获取三个变量 d、m、y。 我也不知道如何制作一个好的按钮说 "Accept" 并将我的 3 个变量移动到星期几函数中。

这是代码

    import math
from tkinter import *

def dayoftheweek(d, m, y):
    a=math.floor((14-m)/12)
    y1=r+4800-a
    n=m+12*-3
    l=d+math.floor((153*n)/5)+365*y1+math.floor(y1/4)-math.floor(y1/100)+math.floor(y1/100)-32045
    p = (l%7)+1
    return p


def date():
   d = int(e1.get())
   m = int(e2.get())
   y = int(e3.get())
   print(dayoftheweek(d, m, y))


master = Tk()
Label(master, text="Day").grid(row=0)
Label(master, text="Month").grid(row=1)
Label(master, text="Year").grid(row=2)

e1 = Entry(master)
e2 = Entry(master)
e3 = Entry(master)

e1.grid(row=0, column=1)
e2.grid(row=1, column=1)
e3.grid(row=2, column=1)



mainloop( )

要在 Tkinter 中打印某些内容,您不能只在代码中使用 print 语句。

你必须在某个地方有一个标签,然后改变那个标签的内容。为此,您必须为该标签分配一个 StringVar。 StringVar 就像普通字符串的特例,之所以特别,是因为每次更改都会刷新 window 的外观。这就是我在这里所做的:

printVar = StringVar()
Label(master, textvariable=printVar).grid(row=4, column=1)

刚刚添加了一个标签,我们可以在其中更新一些文本,又名 "print to"。

另外我添加了一个按钮,这样你就可以调用你的函数date。您可以通过使用调用指定命令的按钮或通过将键(即 Enter、Space...)绑定到 window.

来使 window 执行某些操作
button = Button(master, text="Ok", command=date).grid(row=3, column=1))

现在每次按下按钮都会调用函数date,printVar 的内容会改变并显示在Label 中。

这是完整的代码,我还添加了 r=100 因为你的代码不完整并给出了 global r is not defined.

的错误
import math
from Tkinter import *

def dayoftheweek(d, m, y):
    r = 100 

    a=math.floor((14-m)/12)
    y1=r+4800-a
    n=m+12*-3
    l=d+math.floor((153*n)/5)+365*y1+math.floor(y1/4)-math.floor(y1/100)+math.floor(y1/100)-32045
    p = (l%7)+1
    return p


def date():
   d = int(e1.get())
   m = int(e2.get())
   y = int(e3.get())
   printVar.set(dayoftheweek(d, m, y))


master = Tk()
Label(master, text="Day").grid(row=0, column=0)
Label(master, text="Month").grid(row=1, column=0)
Label(master, text="Year").grid(row=2, column=0)

e1 = Entry(master)
e2 = Entry(master)
e3 = Entry(master)

e1.grid(row=0, column=1)
e2.grid(row=1, column=1)
e3.grid(row=2, column=1)

printVar = StringVar()
Label(master, textvariable=printVar).grid(row=4, column=1)

button = Button(master, text="Ok", command=date).grid(row=3, column=1)



mainloop( )