Python 3.x 为什么tkinter不在visual studio中工作?
我正在visual studio中处理一个新项目,如下面的代码所示,而使用Tkinter的GUI在visual studio中不起作用。这是我第一次使用VisualStudio,我似乎不知道为什么它不起作用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
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中的一些错误,所以启动新项目,在此项目中创建新文件,并从旧项目复制粘贴代码。