python - Tkinter 在使用多个文件销毁窗口后继续执行
问题描述
我正在尝试使用 Tkinter 将数据从顶层窗口获取到完整的 Tk 窗口中。
我有包含 Start 类的开始菜单 Start.py。开始菜单有一个按钮,可通向另一个窗口中的地图编辑器
self.config_4 = tk.Radiobutton(self.gamemode, text="Custom", value = 4, variable = val, command = self.set_custom)
这导致
def set_custom(self):
self.editor = Editor(self.menu)
self.board = self.editor.getBoard()
self.board = Board(BoardType.CLASSIC)
编辑器是另一个打开顶层窗口的文件,它包含我想在 Start.py 中接收的属性 self.board
destroy 函数停止执行的其余部分,并退出。我尝试使用 grab_set 并等待窗口,但没有 mainloop,编辑器无法正常工作。
所以基本上我唯一想要的就是将 self.board 从 Editor 到 Start,然后从 Start 到 main。这两者都是同一个破坏问题。
谢谢 !
#First.py
import tkinter as tk
from Test import Second
class First:
def __init__(self):
self.window = tk.Tk()
self.test = tk.Button(self.window, command = self.popup, text="Test me").pack()
self.stop = tk.Button(self.window, command = self.window.destroy, text="Quit").pack()
self.window.mainloop()
def popup(self):
a = Second()
self.one = a.get_one()
def get_one(self):
return self.one
if __name__ == '__main__':
var = First()
print(var.get_one())
#######################
#Test.py
import tkinter as tk
class Second:
def __init__(self):
self.popup = tk.Toplevel()
myvar = tk.IntVar()
self.one = tk.Radiobutton(self.popup, text="one", value = 1, variable = myvar, command = self.set_one)
self.two = tk.Radiobutton(self.popup, text="two", value = 2, variable = myvar, command = self.set_two)
self.done = tk.Button(self.popup, command = self.popup.destroy, text = "Bye")
self.one.grid(row = 0, column = 0)
self.two.grid(row = 0, column = 1)
self.done.grid(row = 1, column = 0, columnspan = 2)
def set_one(self):
self.one = "Hi"
def set_two(self):
self.one = "Bye"
def get_one(self):
return self.one
解决方案
推荐阅读
- r - 更改 R 中的数据格式(不想回到 excel)?
- java - 如何在groovy spock中实现when-then-return
- bash - 如果应用程序的名称有多个字符串,如何使用我选择的文本编辑器从 CLI 打开文件?
- deep-learning - CNN:验证损失的下降速度比训练损失慢得多是正常的吗?
- php - PHP 连接数组(列表)并忽略重复键,因为我们只使用值
- c# - 如何在 C# 中正确旋转图像?
- django - 如何为使用 Sphinx 创建的 Django 文档创建命名 URL
- c++ - Intel OpenVINO 内存泄漏与 VS2017
- excel - Excel公式计算2个日期时间戳之间经过的分钟数,仅计算工作时间内的分钟数
- javascript - TypeError : .next() 不是函数