가져온 모듈 내에서 위젯을 추가하거나 삭제하는 방법을 알고 싶습니다. 나는 그들에게 정확하게 접근하지 못한다. OOP를 사용하면 쉽게 할 수 있지만 OOP를 이해하려고 노력하고 원리는 쉽지만 세부 사항에 대해서는 머리를 맞지 않습니다. 따라서 적절한 교사가 부족하기 때문에 절차 적 솔루션이 필요합니다.다른 모듈 내에서 tkinter 위젯 추가 또는 삭제
이 주 스크립트입니다
#!/usr/bin/python
try:
# Python2
import Tkinter as tk
except ImportError:
# Python3
import tkinter as tk
import os
import sys
sys.path.append(os.path.dirname(os.path.realpath(__file__)))
import target
def myfunction(event):
canvas.configure(scrollregion=canvas.bbox("all"),width=300,height=200)
def test():
target.secondWindow()
root = tk.Tk()
root.geometry("600x350+30+50")
myframe = tk.Frame(root,relief="groove",bd=1)
myframe.place(x=20, y=30, width=560, height=200)
canvas = tk.Canvas(myframe)
frame = tk.Frame(canvas)
myscrollbar=tk.Scrollbar(myframe, orient="vertical", command=canvas.yview)
canvas.configure(yscrollcommand=myscrollbar.set)
myscrollbar.pack(side="right", fill="y")
canvas.pack(side="left")
canvas.create_window((0,0), window=frame, anchor='nw')
allMissions = {
"1":{"name":"go"},
"2":{"name":"see"},
"3":{"name":"win"},
"4":{"name":"party"}} # this would be a text file
for a in allMissions.keys():
mn = allMissions[a]["name"]
tk.Label(frame, text=mn, justify="left").grid(row=int(a), column=0)
# what's bind really doing?
frame.bind("<Configure>", myfunction)
test = tk.Button(root, command=test, text="TEST")
test.place(x = 20, y = 250, width=580, height=40)
tk.mainloop()
이 가져온 모듈 : 두 번째에 어떤 위젯의 메모리 주소를 전달하여 당신이 그것을 할 target.py
try:
# Python2
import Tkinter as tk
except ImportError:
# Python3
import tkinter as tk
def changeMainWindow():
# here's where I'm stuck
print("What do I have to do to add a new")
print("label in the main window from here?")
print("Or to delete it?")
def secondWindow():
amWin = tk.Toplevel()
amWin.geometry("300x200+720+50")
button = tk.Button(amWin, text="OK", command=changeMainWindow)
button.place(x = 20, y = 80, width=260, height=30)
#amWin.mainloop() comment noticed (:
두 번째 모듈에 문제가 있습니다. 'mainloop'을 호출해서는 안됩니다. –
감사합니다, 당신 말이 맞아요. 나는 그것을 바로 잡았다. –