【python】ttkbootstrap的窗口关闭事件问题
想给窗口关闭的时候弹出确认取消的消息框,在外边能运行但是放窗口关闭函数里就不行了有大佬帮忙看看吗报了这个 RuntimeError: Calling Tcl from different apartment
import ttkbootstrap as ttk
from ttkbootstrap.dialogs import Messagebox
import threading
class TestGui:
def __init__(self, root_window):
self.root_windows = root_window
self.root_windows.title("11111111")
self.root_windows.geometry("380x285")
self.root_windows.protocol('WM_DELETE_WINDOW', lambda: self.thread_it(self.clos_window))
# Messagebox.okcancel(message="确定取消") 正常弹窗
def clos_window(self):
Messagebox.okcancel(message="确定取消")#这就报错了用self方法也是
# 还没加入判断 只是测试消息框
def thread_it(self, func, *args):
self.myThread = threading.Thread(target=func, args=args)
self.myThread .setDaemon(True)
self.myThread .start()
if __name__ == '__main__':
root_window = ttk.Window()
root_window.attributes("-topmost", 1)
root_window.resizable(width=False, height=False)
test_gui = TestGui(root_window)
root_window.mainloop()
self.root_windows.protocol("WM_DELETE_WINDOW", lambda arg=self.root_windows: self.clos_window(arg))
def clos_window(self, master):
Messagebox.okcancel(message="确定取消") QingTianGG 发表于 2023-1-9 11:02
self.root_windows.protocol("WM_DELETE_WINDOW", lambda arg=self.root_windows ...
可以了 可以了 谢谢大佬 可以告诉我咋回事吗 这代码是我在没用ttkbootstrap之前的程序里拿出来的,用了ttkbootstrap之后不知道啥情况开发文档也没看明白 yang4384 发表于 2023-1-9 11:09
可以了 可以了 谢谢大佬 可以告诉我咋回事吗 这代码是我在没用ttkbootstrap之前的程序里拿出来的,用了 ...
https://www.pythonheidong.com/blog/article/657599/d3d5319f0fedc05bcce4/
我是参考了这个的代码{:301_1008:},我也没弄明白 QingTianGG 发表于 2023-1-9 11:13
https://www.pythonheidong.com/blog/article/657599/d3d5319f0fedc05bcce4/
我是参考了这个的代码{:3 ...
能用是能用了 但是现在我的多线程没用了:'(weeqw import ttkbootstrap as ttk
from ttkbootstrap.dialogs import Messagebox
class TestGui:
def __init__(self, root_window):
self.root_windows = root_window
self.root_windows.title("11111111")
self.root_windows.geometry("380x285")
self.root_windows.protocol("WM_DELETE_WINDOW", self.close_windows)
def close_windows(self):
result = Messagebox.okcancel("确认退出吗?", "提示")
print(result)
if result == "确定":
self.root_windows.destroy()
if __name__ == '__main__':
root_window = ttk.Window()
root_window.attributes("-topmost", 1)
root_window.resizable(width=False, height=False)
test_gui = TestGui(root_window)
root_window.mainloop()
xilidexiao 发表于 2023-1-9 14:08
import ttkbootstrap as ttk
from ttkbootstrap.dialogs import Messagebox
可是这样我的多线程就没了哎 我测试过其实是可以正常调用函数的但运行到 Messagebox就不行了
测试了一下 其实能调用def函数,但是一运行messgbox就不行了不知道是不是我在def里的写法有问题 yang4384 发表于 2023-1-9 14:47
可是这样我的多线程就没了哎 我测试过其实是可以正常调用函数的但运行到 Messagebox就不行了
tkinter界面单线程占用的 用不了多线程 xilidexiao 发表于 2023-1-9 15:11
tkinter界面单线程占用的 用不了多线程
那为啥我没装ttkbootstrap之前 用默认的tk可以我复制原来的代码过来的只是觉得界面太丑换一下第三方主题
页:
[1]
2