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