需要帮助创建一个窗口,该窗口将进入带有滑块的选项菜单。在python中使用Tkinter

需要帮助创建一个窗口,该窗口将进入带有滑块的选项菜单。在python中使用Tkinter,python,tkinter,slider,Python,Tkinter,Slider,我已经创建了一个窗口,窗口上有一个按钮,上面写着“回车”,单击后,我希望它进入一个带有3个单独滑块的选项菜单,用户可以通过该菜单调整这些滑块以获得一个值,然后按Enter键。有了这个值,我希望有一个与该值相同的计时输出,以秒为单位。我对Python非常陌生,需要尽可能多的帮助(请:) 这是我到目前为止的代码;到目前为止,第一个输入屏幕将出现,然后当按下输入按钮时,它将加载我创建的下一个窗口,其中有三个滑块我不确定这是最好的方式吗?完全的诺维斯! 请告知:) “按回车屏幕”的第一个窗口 选项菜单的

我已经创建了一个窗口,窗口上有一个按钮,上面写着“回车”,单击后,我希望它进入一个带有3个单独滑块的选项菜单,用户可以通过该菜单调整这些滑块以获得一个值,然后按Enter键。有了这个值,我希望有一个与该值相同的计时输出,以秒为单位。我对Python非常陌生,需要尽可能多的帮助(请:) 这是我到目前为止的代码;到目前为止,第一个输入屏幕将出现,然后当按下输入按钮时,它将加载我创建的下一个窗口,其中有三个滑块我不确定这是最好的方式吗?完全的诺维斯! 请告知:)

“按回车屏幕”的第一个窗口

选项菜单的第二个窗口3个独立的滑块

#! /usr/bin/env python 
from Tkinter import *
window = Tk()
window.title( 'random title' )
window.configure( bg = 'purple' )
def show_values () :
    print (w1.get(), w2.get(), w3.get()) 

btn_ent = Button( window , text = 'Enter' , command=show_values) 
btn_ent.grid(row=3, column=3, padx=5, pady=5)
label_chem= Label( window , bg = 'purple', text = 'Please Choose Chemical Levels' )
label_chem.grid(row=0, column=2, padx=5, pady=5)
label_nic= Label( window , bg = 'purple', text = 'Nictonine (mg)' )
label_nic.grid(row=1, column=1, padx=5, pady=5)
label_glyc= Label( window , bg = 'purple', text = 'Glycol (mg)' )
label_glyc.grid(row=1, column=2, padx=5, pady=5)
label_gli= Label( window , bg = 'purple', text = 'Glycerine (mg) ' )
label_gli.grid(row=1, column=3, padx=5, pady=5)
w1 = Scale( window, bg = 'purple', from_=30, to=0, orient=VERTICAL, resolution=0.5 )
w1.grid(row=2, column=1, padx=5, pady=5)
w2 = Scale( window, bg = 'purple', from_=30, to=0, orient=VERTICAL, resolution=0.5 )
w2.grid(row=2, column=2, padx=5, pady=5)
w3 = Scale( window, bg = 'purple', from_=30, to=0, orient=VERTICAL, resolution=0.5 )
w3.grid(row=2, column=3, padx=5, pady=5)

window.mainloop()

使用
Toplevel
创建第二个窗口和定时窗口的第一个版本-全部在一个文件中

我使用
after(时间_毫秒,函数_名称)
time _毫秒

按buton键进入查看定时窗口。它在固定时间后关闭

#! /usr/bin/env python 

from Tkinter import *

#-----------------------------------------------    
# global variable

time = 0

#-----------------------------------------------    
# second window

def second_window():

    subwindow = Toplevel(window)
    subwindow.title('random title')
    subwindow.configure(bg='purple')

    def show_values():
        print w1.get(), w2.get(), w3.get()

    btn_ent = Button(subwindow, text='Enter', command=timed_window) 
    btn_ent.grid(row=3, column=3, padx=5, pady=5)
    label_chem = Label(subwindow, bg='purple', text='Please Choose Chemical Levels')
    label_chem.grid(row=0, column=2, padx=5, pady=5)
    label_nic = Label(subwindow, bg='purple', text='Nictonine (mg)')
    label_nic.grid(row=1, column=1, padx=5, pady=5)
    label_glyc = Label(subwindow, bg='purple', text='Glycol (mg)')
    label_glyc.grid(row=1, column=2, padx=5, pady=5)
    label_gli = Label(subwindow , bg='purple', text='Glycerine (mg)')
    label_gli.grid(row=1, column=3, padx=5, pady=5)
    w1 = Scale(subwindow, bg='purple', from_=30, to=0, orient=VERTICAL, resolution=0.5)
    w1.grid(row=2, column=1, padx=5, pady=5)
    w2 = Scale(subwindow, bg='purple', from_=30, to=0, orient=VERTICAL, resolution=0.5)
    w2.grid(row=2, column=2, padx=5, pady=5)
    w3 = Scale(subwindow, bg='purple', from_=30, to=0, orient=VERTICAL, resolution=0.5)
    w3.grid(row=2, column=3, padx=5, pady=5)

#-----------------------------------------------    
# timed window

def timed_window():
    global time

    time = 50

    def countdown():
        global time

        if time > 0:
            time -= 1
            lab.config(text=str(time))
            subwindow.after(100, countdown) # 100 miliseconds
        else:
            subwindow.destroy()

    subwindow = Toplevel(window)
    subwindow.title('countdown')
    subwindow.configure(bg='purple')

    lab = Label(subwindow, bg='purple', text=str(time))
    lab.pack(padx=20, pady=20)

    subwindow.after(100, countdown) # 100 miliseconds

#-----------------------------------------------    
# mainwindow

window = Tk()
window.title('company name')
window.configure(bg='purple')
label = Label(window, text='company name with slogan')
label.grid(row=0, column=1)
btn_nxt = Button(window, bg='purple',  text='Enter', command=second_window)  
btn_nxt.grid(row=1, column=1, padx=100, pady=100)

window.mainloop()
第二个版本,有一个窗口和两个框架-都在一个文件中

我使用
pack()
pack\u-forget()
来显示和隐藏帧。
我使用与以前相同的
定时窗口

#! /usr/bin/env python 

from Tkinter import *

#-----------------------------------------------    

frame_1 = None
frame_2 = None
time = 0

#-----------------------------------------------    

def create_frame_1():
    global frame_1

    frame_1 = Frame(window)
    frame_1.configure(bg='purple')

    label = Label(frame_1, text='company name with slogan')
    label.grid(row=0, column=1)

    btn_nxt = Button(frame_1, bg='purple',  text='Enter', command=show_frame_2)  
    btn_nxt.grid(row=1, column=1, padx=100, pady=100)

def create_frame_2():

    def show_values():
        print w1.get(), w2.get(), w3.get()

    global frame_2

    frame_2 = Frame(window)
    frame_2.configure(bg='purple')

    btn_ent = Button(frame_2, text='Enter', command=timed_window) 
    btn_ent.grid(row=3, column=3, padx=5, pady=5)
    label_chem = Label(frame_2, bg='purple', text='Please Choose Chemical Levels')
    label_chem.grid(row=0, column=2, padx=5, pady=5)
    label_nic = Label(frame_2, bg='purple', text='Nictonine (mg)')
    label_nic.grid(row=1, column=1, padx=5, pady=5)
    label_glyc = Label(frame_2, bg='purple', text='Glycol (mg)')
    label_glyc.grid(row=1, column=2, padx=5, pady=5)
    label_gli = Label(frame_2 , bg='purple', text='Glycerine (mg)')
    label_gli.grid(row=1, column=3, padx=5, pady=5)
    w1 = Scale(frame_2, bg='purple', from_=30, to=0, orient=VERTICAL, resolution=0.5)
    w1.grid(row=2, column=1, padx=5, pady=5)
    w2 = Scale(frame_2, bg='purple', from_=30, to=0, orient=VERTICAL, resolution=0.5)
    w2.grid(row=2, column=2, padx=5, pady=5)
    w3 = Scale(frame_2, bg='purple', from_=30, to=0, orient=VERTICAL, resolution=0.5)
    w3.grid(row=2, column=3, padx=5, pady=5)

    btn_back = Button(frame_2, text='Back', command=show_frame_1) 
    btn_back.grid(row=3, column=1, padx=5, pady=5)

#-----------------------------------------------    

def show_frame_1():
    frame_2.pack_forget()
    window.title('company name')
    frame_1.pack()

def show_frame_2():
    frame_1.pack_forget()
    window.title('random title')
    frame_2.pack()

#-----------------------------------------------    

def timed_window():
    global time

    time = 50

    def countdown():
        global time

        if time > 0:
            time -= 1
            lab.config(text=str(time))
            subwindow.after(100, countdown) # 100 miliseconds
        else:
            subwindow.destroy()

    subwindow = Toplevel(window)
    subwindow.title('countdown')
    subwindow.configure(bg='purple')

    lab = Label(subwindow, bg='purple', text=str(time))
    lab.pack(padx=20, pady=20)

    subwindow.after(100, countdown) # 100 miliseconds

#-----------------------------------------------    

window = Tk()

create_frame_1()
create_frame_2()

show_frame_1()

window.mainloop()

对于我来说,使用
execfile()
是一个非常好的解决方案。您可以将小部件添加到
框架中
,并使用
grid()/grid\u-forget()
pack()/pack\u-forget()
-将一个窗口中的所有内容都放在一个文件中。顺便说一句:如果一个窗口必须创建第二个窗口(并保留第一个窗口),则使用
Toplevel()
代替
Tk()
作为第二个窗口。
#! /usr/bin/env python 

from Tkinter import *

#-----------------------------------------------    

frame_1 = None
frame_2 = None
time = 0

#-----------------------------------------------    

def create_frame_1():
    global frame_1

    frame_1 = Frame(window)
    frame_1.configure(bg='purple')

    label = Label(frame_1, text='company name with slogan')
    label.grid(row=0, column=1)

    btn_nxt = Button(frame_1, bg='purple',  text='Enter', command=show_frame_2)  
    btn_nxt.grid(row=1, column=1, padx=100, pady=100)

def create_frame_2():

    def show_values():
        print w1.get(), w2.get(), w3.get()

    global frame_2

    frame_2 = Frame(window)
    frame_2.configure(bg='purple')

    btn_ent = Button(frame_2, text='Enter', command=timed_window) 
    btn_ent.grid(row=3, column=3, padx=5, pady=5)
    label_chem = Label(frame_2, bg='purple', text='Please Choose Chemical Levels')
    label_chem.grid(row=0, column=2, padx=5, pady=5)
    label_nic = Label(frame_2, bg='purple', text='Nictonine (mg)')
    label_nic.grid(row=1, column=1, padx=5, pady=5)
    label_glyc = Label(frame_2, bg='purple', text='Glycol (mg)')
    label_glyc.grid(row=1, column=2, padx=5, pady=5)
    label_gli = Label(frame_2 , bg='purple', text='Glycerine (mg)')
    label_gli.grid(row=1, column=3, padx=5, pady=5)
    w1 = Scale(frame_2, bg='purple', from_=30, to=0, orient=VERTICAL, resolution=0.5)
    w1.grid(row=2, column=1, padx=5, pady=5)
    w2 = Scale(frame_2, bg='purple', from_=30, to=0, orient=VERTICAL, resolution=0.5)
    w2.grid(row=2, column=2, padx=5, pady=5)
    w3 = Scale(frame_2, bg='purple', from_=30, to=0, orient=VERTICAL, resolution=0.5)
    w3.grid(row=2, column=3, padx=5, pady=5)

    btn_back = Button(frame_2, text='Back', command=show_frame_1) 
    btn_back.grid(row=3, column=1, padx=5, pady=5)

#-----------------------------------------------    

def show_frame_1():
    frame_2.pack_forget()
    window.title('company name')
    frame_1.pack()

def show_frame_2():
    frame_1.pack_forget()
    window.title('random title')
    frame_2.pack()

#-----------------------------------------------    

def timed_window():
    global time

    time = 50

    def countdown():
        global time

        if time > 0:
            time -= 1
            lab.config(text=str(time))
            subwindow.after(100, countdown) # 100 miliseconds
        else:
            subwindow.destroy()

    subwindow = Toplevel(window)
    subwindow.title('countdown')
    subwindow.configure(bg='purple')

    lab = Label(subwindow, bg='purple', text=str(time))
    lab.pack(padx=20, pady=20)

    subwindow.after(100, countdown) # 100 miliseconds

#-----------------------------------------------    

window = Tk()

create_frame_1()
create_frame_2()

show_frame_1()

window.mainloop()