Python 3.x 为什么tkinter不在visual studio中工作?

Python 3.x 为什么tkinter不在visual studio中工作?,python-3.x,visual-studio-2015,tkinter,ptvs,Python 3.x,Visual Studio 2015,Tkinter,Ptvs,我正在visual studio中处理一个新项目,如下面的代码所示,而使用Tkinter的GUI在visual studio中不起作用。这是我第一次使用VisualStudio,我似乎不知道为什么它不起作用 from tkinter import * import tkinter as ttk #import os #not needed root = Tk() #Setting up the window root.geometry("250x100") root.resizab

我正在visual studio中处理一个新项目,如下面的代码所示,而使用Tkinter的GUI在visual studio中不起作用。这是我第一次使用VisualStudio,我似乎不知道为什么它不起作用

from tkinter import *
import tkinter as ttk
#import os      #not needed
root = Tk()

#Setting up the window

root.geometry("250x100")
root.resizable(width=False, height=False)#Disables user to resize window
root.title("Login")

#Temp "DataBase"

users=[("josh","python")] #<<<here ''josh'' is user and ''python'' i5s         password
admins=[("josh1","python1")]

# Login and signup function

def login():        #login function

    if (t1.get(),t2.get())in users:     #Temp for testing
        root.destroy()
        import MainWindow
#        os.system("MainWindow")        #does not work
        print("welcome")

    elif (t1.get(),t2.get())in admins:      #Temp for testing
        root.destroy()
        import AdminMainWindow
#        os.system("AdminMainWindow")     #does not work
        print("welcome Admin")

    else:

        error.config(text="Invalid username or password")

def signup():       #signup function
    root.destroy
    import SignupWindow
#    os.system("SignupWindow")     #does not work

#arranging display varables

top = Frame(root)
bottom = Frame(root)
top.pack(side=TOP, fill=BOTH, expand=True)
bottom.pack(side=BOTTOM, fill=BOTH, expand=True)

#error placement and font

error = Label(root, font=("blod",10))
error.place(x=40,y=55)

#input display setup

l1 = Label(root,text="Username:")
l2 = Label(root,text="Password:")

t1 = Entry(root, textvariable=StringVar())
t2 = Entry(root, show="*", textvariable=StringVar())

b1 = Button(root,text="Login", command=login)
b2 = Button(root,text="Signup", command=signup)

#organising

l1.pack(in_=top, side=LEFT)
t1.pack(in_=top, side=LEFT)
l2.pack(side=LEFT,)
t2.pack(side=LEFT,)
b1.pack(in_=top, side=BOTTOM)
b2.pack(in_=bottom, side=BOTTOM)

#end of Tk loop

root.mainloop()
从tkinter导入*
将tkinter作为ttk导入
#导入操作系统#不需要
root=Tk()
#设置窗口
根几何(“250x100”)
root.resizeable(width=False,height=False)#禁止用户调整窗口大小
root.title(“登录”)
#临时“数据库”

users=[(“josh”,“python”)]#在创建新项目之前,我创建了一个新文件,并将所有代码放在其中。然后一次向VS添加一个代码,这样它就可以工作,但当您同时执行所有操作时就不能工作。

在ms windows上,使用
tkinter
的python程序应该具有扩展名
.pyw
。这个扩展应该与
pythonw.exe
相关联,而不是与
python.exe
相关联


当python脚本有GUI时,使用
pythonw.exe
将防止出现
cmd.exe
窗口。

添加
print()
以查看是否会打印任何内容。我看到您的项目中有多个文件-可能它从您的项目中启动不同的文件。在每个文件中放入一些
print()
,以查看执行哪个文件。由于您的代码在VS之外工作,它似乎与VS如何运行Python脚本有关。按照@furas的建议去做,并在
根目录下的mainloop()调用之前放置一个
打印('starting loop')
,看看它是否走得那么远。由于您看到的是Python控制台,最可能的问题是脚本的文件名没有传递给解释器。谢谢,伙计们,但是它在VS之外工作得非常好,iv在循环之外添加了一些打印,并且它不会在命令窗口或命令行中打印它们。但是,如果我创建了一个新项目,只需要print(“Hi”),它就会产生相同的结果,但会像命令行中的str一样打印“Hi”,就像命令行中的命令一样@您是否要在所有文件中添加
print()
?Project可能已经分配了一个文件,当您运行Project时它总是执行该文件,并且它可以是不同于您预期的文件。或者很简单,这是VS中的一些错误,所以启动新项目,在此项目中创建新文件,并从旧项目复制粘贴代码。