python-3.x - tkinter 按钮的多个命令
问题描述
我一直在尝试在 1 个按钮中执行 2 个命令。我读过使用 lambda 可以解决问题。但我的情况有点不同。按下按钮时,一个命令是破坏现有的 GUI,第二个命令是打开另一个 SERVER GUI。下面是我现有的按钮功能。
exit_button = Button(topFrame, text='Quit', command=window.destroy)
如何使用相同的按钮打开另一个 GUI?
感谢您的任何帮助。
编辑:-
我现在创建了以下函数:
def close_func():
os.kill(os.getpid(), signal.SIGINT)
GUI_Interface()
window.destroy()
server_socket.close()
GUI_Interface 是我需要在关闭现有 .py 文件后调用的函数。如果我将 GUI_Interface 作为 close_func() 的第一个命令,那么它真的不会返回到第二步并且永远不会关闭现有的.py 文件。
如果我把 GUI_Interface 放在最后,它只会关闭现有的并且 nevr 打开新的 .py 文件的功能
解决方案
至少三个选项:
使用or
(带有 lambda if 参数):
from tkinter import Tk, Button
root = Tk()
Button(root, text='Press', command=lambda: print('hello') or root.destroy() or print('hi')).pack()
root.mainloop()
使用很重要,or
因为and
没有用(根本不知道为什么或如何工作)
或使用函数定义:
from tkinter import Tk, Button
def func():
print('hello')
root.destroy()
print('hi')
root = Tk()
Button(root, text='Press', command=func).pack()
root.mainloop()
或带有 lambda 的列表:
from tkinter import Tk, Button
def func():
print('hello')
root.destroy()
print('hi')
root = Tk()
Button(root, text='Press', command=lambda: [print('hello'), root.destroy()]).pack()
root.mainloop()
推荐阅读
- laravel - 雄辩的“何时”方法又一个“何时”
- python - 将 Series 中的每个值替换为其相对排名
- python - 将 PDF 报告排序到正确的目录“TypeError:预期的 str、字节或 os.PathLike 对象,而不是列表”
- angular - 部署到heroku时,简单的角度服务没有上下文(this = undefined)?
- c - Gtk3 - 如何在我的 GtkApplication 中通过 GAction 收听加速器?
- swift - 如何用数据数组填充 UICollectionView?
- excel - 从源文件夹到目标文件夹的文件夹列表复制vba
- python - 使用while循环更新多个函数中使用的分配变量 - PYTHON
- java - 如何在 Spring 中将 @Repository 添加到非控制器类?
- python - 将 CSV 从 AWS S3 实例导入到 Numpy