Окно Tkinter в python не открывается?

#python-3.x #user-interface #tkinter

#python-3.x #пользовательский интерфейс #tkinter

Вопрос:

Итак, я создавал программу типа Personal Assistant на python, но в середине отладки она перестала открывать окно GUI. У меня есть root.mainloop, и в оболочке не отображаются ошибки. Есть предложения? Это один из моих первых проектов Tkinter, поэтому могут быть некоторые действительно очевидные вещи, которые я пропустил 🙂

 from tkinter import *
from tkinter import ttk
import time
import os
import subprocess
from random import *
needed = True
path = ''
items = ["CODE", "INTERNET", "FILES", "TIME", "TERMINAL", "MEDIA"]

root = Tk()
root.title = "PPA"


def Greet():
    #Generate a greeting
    greeting = choice(["Welcome back", "Hello", "Good to see you"])
    #Greet the user
    PPA.set(greeting,"Master")
    time.sleep(0.7)

def Main(need, user):
    global needed
    while needed == True:
        #Ask user what they need
        PPA.set("What would you like to do?")
        if need == "CODE":
            PPA.set("Ok, I will open up the code editor")
            path = "geany"
            subprocess.call(path)
        elif need == "INTERNET":
            PPA.set("Ok, I will open the internet browser")
            path = "chromium-browser"
            subprocess.call(path)
        elif need == "TIME":
            PPA.set("This is the time:")
            PPA.set(time.strftime("%H:%M:%S"))
        elif need == "FILES":
            PPA.set("Ok, I will open the file browser")
            path = "pcmanfm"
            subprocess.call(path)
        elif need == "TERMINAL":
            PPA.set("Ok, I will open the terminsl")
            path = "lxterminal"
            subprocess.call(path)
        elif need == "MEDIA":
            PPA.set("Ok, I will open the media player")
            path = "vlc"
            subprocess.call(path)
        else:
            pass
        PPA.set("Can I still be of assistance?")
        user.set(need)
        if user == "NO":
            needed = False
        else:
            need = ""
            pass

def Farewell():
    farewell = choice(["Farewell", "Goodbye", "See you soon"])
    PPA.set(farewell,"Master")
    

mainframe = ttk.Frame(root, padding="3 3 12 12")
mainframe.grid(column=0, row=0, sticky=(N, W, E, S))
root.columnconfigure(0, weight=1)
root.rowconfigure(0, weight=1)

need = StringVar()
need_entry = ttk.Entry(mainframe, width=7, textvariable=need)
need_entry.grid(column=2, row=1, sticky=(W, E))
user = StringVar()
PPA = StringVar()
ttk.Label(mainframe, textvariable=PPA).grid(column=2, row=2, sticky=(W, E))

ttk.Button(mainframe, text="Enter", command=Main(need, user).grid(column=3, row=3, sticky=W))

root.mainloop()
 

Комментарии:

1. Привет! Вы имеете в виду «нет ошибок в оболочке» или есть ошибки?

2. Сейчас никаких ошибок нет

3. что вы сделали для отладки этого? Не похоже, что код может когда-либо выйти из этого цикла : while need not in items: . Если need не items включено, этот цикл никогда не закончится.

4. Я уверен, что это лучший способ, но я просто пошел и исправил ошибки по мере их появления. Я посмотрю, смогу ли я что-то сделать с циклом

5. Как вы думаете, это сработало бы, если бы я удалил то, что вы указали?