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

Python3 Tkinter报错求助:附Python3.6环境下的代码片段

Fixing Tkinter Errors in Jupyter Notebook (Ubuntu 17.10, Python 3.6)

Hey there! Let's break down why your Tkinter code is throwing errors in Jupyter Notebook and how to fix it.

The Root Cause

Jupyter Notebook runs in a server-like context, and by default, it doesn't set up the necessary environment for Tkinter to render its GUI. Tkinter relies on an X11 display (standard for Ubuntu's desktop), but Jupyter doesn't automatically enable this for GUI libraries unless you explicitly tell it to. That's why initializing Tk() throws an error—it can't find a display to use.

Step-by-Step Fixes

1. Ensure Tkinter is Fully Installed

First, double-check that your Ubuntu system has the complete Python 3 Tkinter package installed (sometimes it's missing by default):

sudo apt-get install python3-tk

2. Enable Tkinter GUI Support in Jupyter

Before running your Tkinter code, you need to tell Jupyter to activate the Tkinter event loop. Do this in a separate notebook cell first:

%gui tk

This magic command initializes the Tkinter backend so your GUI can render correctly.

3. Run Your Tkinter Code (Completed Example)

Here's your truncated code filled out to work properly after running the above command:

from tkinter import *
from tkinter import ttk

class Aplicacion():
    def __init__(self):
        self.root = Tk()
        self.root.geometry('300x200')
        self.root.resizable(width = False, height = False)
        self.root.configure(bg = 'red')
        self.root.title('Cachonerismo')
        self.nombre = StringVar()
        self.respuesta = StringVar()
        
        # Add entry field
        self.txt = ttk.Entry(self.root, textvariable = self.nombre)
        self.txt.pack(pady=20)
        
        # Add greeting button
        self.btn = ttk.Button(self.root, text="Saludar", command=self.saludar)
        self.btn.pack()
        
        # Add response label
        self.lbl = ttk.Label(self.root, textvariable=self.respuesta)
        self.lbl.pack(pady=10)
        
        self.root.mainloop()
    
    def saludar(self):
        # Update response with entered name
        self.respuesta.set(f"Hola, {self.nombre.get()}!")

# Initialize the app
app = Aplicacion()

A Quick Heads-Up

Once you close the Tkinter window, you'll need to restart your Jupyter Notebook kernel if you want to run the code again. Tkinter only allows one root window instance per Python session, so re-running without a restart will throw another error.

内容的提问来源于stack exchange,提问作者Daniel Daza

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:54:32