使用ttkbootstrap开发笑话API应用时出现双窗口问题求助
解决ttkbootstrap运行出现两个窗口的问题
问题出在你提前创建了Label和Button组件却未指定父窗口。当你在显式创建主窗口之前实例化这些组件时,ttkbootstrap会自动生成一个默认的Tk根窗口;之后你又手动创建了tb.Window,最终导致两个窗口同时出现。
修改后的代码如下:
import requests import ttkbootstrap as tb from ttkbootstrap.constants import * def get_joke(): url = "https://icanhazdadjoke.com" headers = {'Accept': 'application/json'} joke_time = requests.get(url, headers=headers).json().get('joke') label.config(text=joke_time) print(joke_time) if __name__ == '__main__': app = tb.Window(themename='darkly') app.title('Joke App') app.geometry('1280x900') # 将组件创建移到主窗口之后,并指定父组件为app label = tb.Label(app, text="", font=("Poppins", 16), bootstyle='default') label.pack(padx=5, pady=10) btn = tb.Button(app, text="Get Joke!", command=get_joke) btn.pack(padx=5, pady=10) app.mainloop()
关键修改点:
- 将
Label和Button的初始化代码移到tb.Window创建之后,确保它们属于你自定义的窗口实例 - 为
Label和Button添加第一个参数app,指定它们的父组件为你创建的主窗口,避免绑定到自动生成的默认窗口
内容的提问来源于stack exchange,提问作者Vicente Antonio G. Reyes
相关产品推荐
相关产品推荐

