#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. Как вы думаете, это сработало бы, если бы я удалил то, что вы указали?