-1
私はVisual Studioの新しいプロジェクトで以下のコードを実行しています.Tkinterを使用しているGUIはVisual Studioで動作していません。これはビジュアルスタジオを初めて使用しているため、なぜ動作しないのか分かりません。tkinterがビジュアルスタジオで動作しないのはなぜですか?
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()
これはpythonコマンドラインで表示され、続行するには任意のキーを押します。
私もオンラインで見ました。人々はTkループを終了しないので、私は言いますが、私は持っています。
'print()'を追加して何かを印刷するかどうかを確認します。私はあなたがプロジェクト内に1つ以上のファイルを持っているのを見ています - おそらく、プロジェクトから別のファイルを開始します。すべてのファイルに 'print()'を入れて、実行されているファイルを確認してください。 – furas
あなたのコードはVSの外で動作するので、VSがPythonスクリプトをどのように実行するかと関係しているようです。 @furasが示唆しているように 'print( '開始ループ')'を 'root'、mainloop()'呼び出しの直前に置き、それが遠くにあるかどうかを確認します。あなたがPythonコンソールを見ているので、スクリプトのファイル名がインタープリタに渡されていない可能性が最も高い問題です。 – martineau
ありがとう、みんな、VSの外では完全に動作し、ループの外でいくつかのプリントが追加され、コマンドウィンドウやコマンドラインには表示されません。しかし、私が新しいプロジェクトを作成して印刷( "Hi")しても同じことが起こりますが、コマンドラインでstrとして "Hi"を表示するように求められます。 @furas –