【问题标题】:iPython: How to get 3 variables from useriPython:如何从用户那里获取 3 个变量
【发布时间】:2016-04-21 11:04:28
【问题描述】:

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

我定义了一个函数“dayoftheweek”,它查找给定日期的星期几。 但这是我的问题。我不知道如何使用 GUI 从用户那里获取三个变量 d,m,y。 此外,我不知道如何制作一个“接受”的精细按钮,并将我的 3 个变量移动到 dayoftheweek 函数中。

这里是代码

    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( )

【问题讨论】:

    标签: python interface widget


    【解决方案1】:

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

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

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

    刚刚添加了一个标签,我们可以在其中更新一些文本,也就是“打印到”。

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

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

    现在每次按下按钮时都会调用函数date,并且 printVar 的内容将被更改并显示在标签中。

    这是完整代码,我还添加了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( )
    

    【讨论】:

      猜你喜欢
      • 2013-11-23
      • 2021-05-24
      • 1970-01-01
      • 1970-01-01
      • 2021-03-02
      • 1970-01-01
      • 1970-01-01
      • 2019-06-19
      • 1970-01-01
      相关资源
      最近更新 更多