使用 Tkinter 从这个脚本打开一个窗口

丹妮拉和平

我有两个脚本,下面的一个是我用作菜单的脚本,所以是我需要打开的第一个窗口,从这个窗口开始,当我点击“Simular”时,我需要关闭这个窗口或“脚本”和打开另一个但传递参数。

from tkinter import *
main = Tk()

# Limpiar registros con botonLimpiar
def valoresLimpiar(*args):
  varDes.set('Seleccionar...')
  varModo.set('Seleccionar...')
  varEst.set('Seleccionar...')

# Obtener Valores con botonSimular
def valoresSimular(*args):
  print(varDes.get())
  print(varModo.get())
  print(varEst.get())

# Variables
varDes = StringVar(main)
varDes.set('Seleccionar...')

varModo = StringVar(main)
varModo.set('Seleccionar...')

varEst = StringVar(main)
varEst.set('Seleccionar...')

main.title("Configuración")
main.configure(background = 'light grey') # Color de Fondo

# Caja texto
labelOpciones = Label(main, bg = "light grey", text = 'Ventana Deslizante', padx = 30, pady = 5, width=20)
labelOpciones.grid(row = 0, column = 0)
labelOpciones2 = Label(main, bg = "light grey", text = 'Modo de Transmisión', padx = 30, pady = 5, width=20)
labelOpciones2.grid(row = 1, column = 0)
labelOpciones3 = Label(main, bg = "light grey", text = 'Estrategia de Transmisión', padx = 30, pady = 5, width=20)
labelOpciones3.grid(row = 2, column = 0)

# Caja de Opciones
opciones = ['1','2', '3', '4', '5', '6', '7']
ventanaDeslizante = OptionMenu(main, varDes, *opciones)
ventanaDeslizante.config(width=20)
ventanaDeslizante.grid(row = 0, column = 1, padx = 30, pady = 30)
opciones2 = ['NRM','ABM']
ventanaModoTrans = OptionMenu(main, varModo, *opciones2)
ventanaModoTrans.config(width=20)
ventanaModoTrans.grid(row = 1, column = 1, padx = 30, pady = 30)
opciones3 = ['GoBack-N','Repetición Selectiva']
ventanaEstTrans = OptionMenu(main, varEst, *opciones3)
ventanaEstTrans.config(width=20)
ventanaEstTrans.grid(row = 2, column = 1, padx = 30, pady = 30)  

# Botones Limpiar y Simular
botonLimpiar = Button(main, text="Limpiar", width=20, command=valoresLimpiar)
botonLimpiar.grid(row = 3, column = 0, padx = 20, pady = 30)
botonSimular = Button(main, text="Simular", width=20, command=valoresSimular)
botonSimular.grid(row = 3, column = 1, padx = 20, pady = 30)

main.mainloop()

我知道这是一种用类来做到这一点的方法,但我不知道如何使用它们,希望你能帮助我,谢谢。

更木剑八

我对您的代码进行了一些更改,用组合框替换了 OptionMenu。然后为新窗口创建新函数并在按下按钮后传递变量。

from tkinter import *
from tkinter.ttk import *
main = Tk()

# Limpiar registros con botonLimpiar
def valoresLimpiar(*args):
   varDes.set('Seleccionar...')
   varModo.set('Seleccionar...')
   varEst.set('Seleccionar...')


# Obtener Valores con botonSimular
def move_data():
    window = Tk()  # initiate tkinter to build window
    window.geometry('800x500')  # set window size
    label = Label(window, text='ventanaDeslizante = ' + data_1.get())  # set label
    label.grid(column=0, row=0)  # position of label
    label = Label(window, text='ventanaModoTrans = ' + data_2.get())  # set label
    label.grid(column=0, row=1)  # position of label
    label = Label(window, text='ventanaModoTrans = ' + data_3.get())  # set label
    label.grid(column=0, row=2)  # position of label
    window.mainloop()  # loop to show window



# Variables
varDes = StringVar(main)
varDes.set('Seleccionar...')

varModo = StringVar(main)
varModo.set('Seleccionar...')

varEst = StringVar(main)
varEst.set('Seleccionar...')

main.title("Configuración")
main.configure(background = 'light grey') # Color de Fondo

# Caja texto
label = Label(main, text='Ventana Deslizante')
label.grid(row = 0, column = 0)
label = Label(main, text = 'Modo de Transmisión')
label.grid(row = 1, column = 0)
label = Label(main, text = 'Estrategia de Transmisión')
label.grid(row = 2, column = 0)

# Caja de Opciones
data_1= StringVar()
ventanaDeslizante = Combobox(main, width=8, textvariable=data_1)
# create box list
ventanaDeslizante['values'] = ['1','2', '3', '4', '5', '6', '7']
# setup values for the list
ventanaDeslizante.current(0)
# set starting index from the list
ventanaDeslizante.grid(row = 0, column = 1, padx = 30, pady = 30)

data_2= StringVar()
ventanaModoTrans = Combobox(main, width=8, textvariable=data_2)  
# create box list
ventanaModoTrans['values'] = ['NRM','ABM']
ventanaModoTrans.current(0)
ventanaModoTrans.grid(row = 1, column = 1, padx = 30, pady = 30)

data_3= StringVar()
ventanaEstTrans = Combobox(main, width=8, textvariable=data_3)  
# create box list
ventanaEstTrans['values'] = ['GoBack-N','Repetición Selectiva']
ventanaEstTrans.current(0)
ventanaEstTrans.grid(row = 2, column = 1, padx = 30, pady = 30)

# Botones Limpiar y Simular
botonLimpiar = Button(main, text="Limpiar", width=20, 
command=valoresLimpiar)
botonLimpiar.grid(row = 3, column = 0, padx = 20, pady = 30)
botonSimular = Button(main, text="Simular", width=20, 
command=move_data)
botonSimular.grid(row = 3, column = 1, padx = 20, pady = 30)

main.mainloop()

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

通过Tkinter中的按钮关闭窗口并打开一个新窗口

按下按钮tkinter Python后打开一个新窗口

我如何在 python 3.6 的 tkinter 窗口内打开一个 jpg 图像?

如何从 tkinter 的菜单小部件打开一个新窗口

我可以使用 cron 启动 Perl 脚本,但我可以让它打开一个窗口吗?

使用 Tkinter iwant 打开第二个窗口,然后关闭我所在的前一个窗口

使用Tkinter在一个窗口中随机显示图像

我想使用 tkinter 创建一个登录窗口

Tkinter使用一个代码打开多个文件

如何让 tkinter 按钮只打开一个顶层?

如何使用python tkinter调用一个窗口到另一个窗口

如何在tkinter中使用python 3.5的滚动条打开和关闭另一个窗口?

使用javascript按下按钮时,如何打开一个窗口并关闭另一个窗口?

如果我的登录名和密码正确,如何在Tkinter中打开一个新窗口?

垂直展开一个小部件,同时使用Tkinter / ttk锁定另一个小部件

使用 c# 打开一个新的 Outlook 2016 窗口

使用 MVC 在加载时自动打开一个弹出窗口

使用Pyglet进行多重处理会打开一个新窗口

使用依赖注入在Windows窗体中打开一个新的参数化窗口

使用TkInter的简单窗口

使用自定义网址打开一个新的Chrome窗口,然后使用Autohotkey获得相同的窗口吗?

我有一个打开网页的脚本,如何通过 tkinter 使用 Gui 使正文可编辑,本质上是创建一个新网页

无法在 Tkinter 中使用两个不同的按钮在我从 Python 中的 Selenium 打开的同一个 chrome 窗口上执行任务

使用Material-UI从一个数组中的多个悬停弹出窗口仅打开一个弹出窗口

Mac:在Filezilla中使用Sublime文本进行编辑总是会打开一个新的Sublime窗口

Unity:使用KeyPress依次打开一个GameObject

如何使用 tkinter 的组合创建一个类似简单对话框的窗口?

如何使用OOP将标签添加到另一个窗口tkinter

使用Tkinter窗口运行另一个显示摄像机预览的python文件