You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 04:32:11