Python Tkinter 菜单栏

标签 python tkinter

下面是一些示例代码,就菜单和函数的图形用户界面而言,一切都有效,但是当你向它传递值时,当我想要它做的是计算问题时,该函数不起作用,如下所示它的设计目的是。

我希望该函数成为一个单独的程序,与主窗口保持原样。 原因是我想将更多这些数学函数添加到菜单中。

如何才能让这个功能发挥作用?我是新人,请轻点...... 预先感谢您...

from Tkinter import *
import ttk


def DVT():
    def dvt(*args):
        """This Function will determine distance in feet from a constant velocity and time"""
        try:
            val1 = float(vel.get())
            val2 = float(tme.get())
            dist.set(val1 * val2)
        except ValueError:
            pass

    root = Tk()
    root.title('Distance from Velocity and Time')

    mainframe = ttk.Frame(root, padding="3 3 12 12")
    mainframe.grid(column=0, row=0, sticky=(N, W, E, S))
    mainframe.columnconfigure(0, weight = 1)
    mainframe.rowconfigure(0, weight=1)

    vel = StringVar()
    tme = StringVar()
    dist = StringVar()

    vel_entry = ttk.Entry(mainframe, width=7, textvariable=vel)
    vel_entry.grid(column=2, row=1, sticky=(E, W))
    tme_entry = ttk.Entry(mainframe, width=7, textvariable=tme)
    tme_entry.grid(column=2, row=2, sticky=(E, W))

    ttk.Label(mainframe, textvariable=dist).grid(column=2, row=3, sticky=(W, E))
    ttk.Button(mainframe, text="Calculate", command=dvt).grid(column=3, row=2, sticky=W)
    ttk.Label(mainframe, text="Velocity").grid(column=1, row=1, sticky=(W, E))
    ttk.Label(mainframe, text="Time").grid(column=1, row=2, sticky=W)
    ttk.Label(mainframe, text="The Distance is:").grid(column=1, row=3, sticky=E) 

    for child in mainframe.winfo_children(): child.grid_configure(padx=5, pady=5)

    vel_entry.focus()
    tme_entry.focus()
    root.bind('<Return>', dvt) 
    root.mainloop()


root = Tk()
menubar = Menu(root)


vel = StringVar()
tme = StringVar()
dist = StringVar()


filemenu = Menu(menubar, tearoff=0)
filemenu.add_command(label="Distance from Velocity and Time", command=DVT)

filemenu.add_separator()

filemenu.add_command(label="Exit", command=root.quit)
menubar.add_cascade(label="File", menu=filemenu)
editmenu = Menu(menubar, tearoff=0)


editmenu.add_separator()

root.config(menu=menubar)
root.mainloop()

最佳答案

from Tkinter import *
import ttk
import tkMessageBox

def DVT():

    vel = StringVar()
    tme = StringVar()
    dist = StringVar()

    def dvt():
        """This Function will determine distance in feet from a constant velocity and time"""
        try:
            val1 = float(vel_entry.get())
            val2 = float(tme_entry.get())
            dist.set(val1 * val2)
            tkMessageBox.showinfo(None,"The Distance is: " + dist.get())
        except ValueError as v:
            pass


    root = Tk()
    root.title('Distance from Velocity and Time')

    mainframe = ttk.Frame(root, padding="3 3 12 12")
    mainframe.grid(column=0, row=0, sticky=(N, W, E, S))
    mainframe.columnconfigure(0, weight = 1)
    mainframe.rowconfigure(0, weight=1)


    vel_entry = ttk.Entry(mainframe, width=7)
    vel_entry.grid(column=2, row=1, sticky=(E, W))
    tme_entry = ttk.Entry(mainframe, width=7)
    tme_entry.grid(column=2, row=2, sticky=(E, W))


    ttk.Button(mainframe, text="Calculate", command=dvt).grid(column=3, row=2, sticky=W)
    ttk.Label(mainframe, text="Velocity").grid(column=1, row=1, sticky=(W, E))
    ttk.Label(mainframe, text="Time").grid(column=1, row=2, sticky=W)
    ttk.Label(mainframe, text="The Distance is:").grid(column=1, row=3, sticky=E)

    for child in mainframe.winfo_children(): child.grid_configure(padx=5, pady=5)

    vel_entry.focus()
    tme_entry.focus()
    root.bind('<Return>', dvt) 
    root.mainloop()

root = Tk()
menubar = Menu(root)

filemenu = Menu(menubar, tearoff=0)
filemenu.add_command(label="Distance from Velocity and Time", command=DVT)

filemenu.add_separator()

filemenu.add_command(label="Exit", command=root.quit)
menubar.add_cascade(label="File", menu=filemenu)
editmenu = Menu(menubar, tearoff=0)


editmenu.add_separator()

root.config(menu=menubar)
root.mainloop()

关于Python Tkinter 菜单栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10068538/

相关文章:

python - 使用 pandas.read_csv 分隔列

python - 如何让这个方 block 在 Tkinter 中消失

python - 如何在Python中播放音频文件?

python - 撤回时 Tkinter 不更新

python - 按下按钮后 Tkinter.Label 不显示

python - Pip 不工作 - ModuleNotFoundError : No module named 'runpy'

python - 如何将图像数据分离为x、y坐标? (Python)

python - 在单独的线程上从大文件插入文本时 tk UI 挂起

python - 如何将所有以前的值放入 pandas 数据框中的列中的列表中?

python - 如何在多个包含文件的文件夹上自动化我的三个 bash 脚本?