이전에이 질문을했다면 죄송하지만 저는이 문제를 혼자서 그리고 반 친구들의 도움으로 해결하려고 노력했습니다. 그들은 아무런 문제가 없을 것 같다하지만 난 단지에 도착하지 못할 Value
의 Entry
. 나는 항상 비슷 <function StringVar.get at 0x0358E970>
하거나 비슷한 이상한 문자열을 얻습니다 . 나는 인터넷의 도움으로 이것을 해결하기 위해 지금 전체 5 시간을 보냈다. 내가 이것을 이해하도록 도울 수있는 누군가가 거기에 있기를 바랍니다.
그래서 class
하나의 간단한 항목과 하나의 간단한 버튼으로 Tkinter 창을 만드는 기능 이 있습니다. 그러나 내가 가치를 얻으려고 할 때 나는 textvariable
전혀 string
일할 수없는 일종의 코드를 얻지 못합니다. 내가 도대체 뭘 잘못하고있는 겁니까? 아니면 내가하지 않는 것이 있습니까?
import tkinter as tk
from tkinter import ttk
from tkinter import *
class StrWnd:
def __init__(self):
self.firstname = StringVar
def Register(self):
self.register = Toplevel(self.scr)
self.register.geometry("300x300")
self.register.title("Register")
Label(self.register, text="Vorname(Keine Nummern)").pack()
ttk.Entry(self.register, textvariable=self.firstname).pack()
ttk.Button(self.register, text="Submit", command=lambda: self.printValues()).pack()
def printValues(self):
print(self.firstname.get)
모든 팁을 환영합니다.
좋아, 코드에 많은 문제가 있습니다.
특정 질문 "항목에서 텍스트를 가져 오는 방법"에 대답하려면 get
메서드 를 호출해야합니다 . 코드의 결함은 get 메서드를 호출하지 않는다는 것입니다. printValues
다음과 같이 변경해야합니다 . ()
after 의 사용에 유의하십시오 get
.
def printValues(self):
print(self.firstname.get())
그러나 이는 코드에서 다음 문제를 노출합니다. .NET을 만들 때 동일한 유형의 실수를하고 있습니다 self.firstname
. 다음과 같이 변경해야합니다. 다시 말하지만 ()
.
self.firstname = StringVar()
세 번째 문제는 루트 창을 처음 만든 후에 만 그렇게 할 수 있다는 것입니다. 귀하의 예는 그 경우, 방법 또는시기를 보여주지 않지만 의견에서 이러한 유형의 실수의 증상 인 오류를보고했습니다.
따라서 인스턴스를 만들기 전에 StrWnd
루트 창을 만들어야합니다. 예를 들어 다음과 같을 수 있습니다.
root = tk.Tk()
strwnd = StrWnd()
하지만 루트 창을 나타내는 다른 클래스가있는 것 같으므로 코드에서 정확히 수행하는 방법은 아닐 것입니다. 요점은의 인스턴스를 만들기 전에 루트 창을 만들어야한다는 것입니다 StringVar
.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다