तो एक फ्रेम में मैंने एक साधारण बटन (बटन 1) बनाया। यह कुछ भी नहीं करता है लेकिन महत्वपूर्ण हिस्सा यह है कि मैंने बटन 2 बनाया है जो बटन 1 पर रखा गया है। बटन सामान्य रूप से कार्य करते हैं। उदाहरण के लिए मैं बटन 1 को भूलने के लिए बटन 2 पर क्लिक कर सकता हूं जो बटन 2 को स्वचालित रूप से गायब कर देता है क्योंकि इसे बटन 1 में रखा गया है और यही वही है जो मैं चाहता हूं। लेकिन मुझे यह अजीब बग मिलता है जहां बटन 2 कभी-कभी दिखाई देता है और कभी-कभी नहीं होता है। आपको अपने माउस को इधर-उधर घुमाना है और कभी-कभी यह दिखाई देता है और क्लिक करने योग्य होता है और यदि आप अपने माउस को दूर ले जाते हैं तो यह कभी-कभी गायब हो जाएगा। जब आप बटन 1 पर क्लिक करते हैं तो यह भी गायब हो जाता है। लेकिन मैं चाहता हूं कि यह हर समय दिखाई दे। बटन 2 की तरह बटन 1 पर प्राथमिकता होगी। मैं इस अजीब बग को कैसे ठीक कर सकता हूं?

from tkinter import *

def delete_buttons():
    button1.place_forget()

root = Tk()
root.geometry("400x400")

frame = Frame(root, bg="yellow")
frame.place(relx = 0.1, rely=0.1, relwidth=0.8, relheight=0.8)

# button 2 is created on top of button1
button1 = Button(frame, text="this is a button")
button1.place(relx=0.2, rely=0.2, relwidth=0.6, relheight=0.6)
button2 = Button(button1, text="delete 1st and 2nd button", command=delete_buttons)
button2.place(relx=0.1, rely=0.6, relwidth=0.8, relheight=0.3)

root.mainloop()
1
Enrique Metner 26 अक्टूबर 2020, 19:06

1 उत्तर

सबसे बढ़िया उत्तर

संभवतः बटनों को मूल विजेट के रूप में उपयोग करने का इरादा नहीं है, इसलिए अप्रत्याशित व्यवहार उत्पन्न हो सकता है।

आप दोनों बटनों के लिए frame को पैरेंट के रूप में उपयोग कर सकते हैं और फिर भी उन्हें एक दूसरे के ऊपर प्रदर्शित कर सकते हैं। आपको स्थिति की अधिक सावधानी से गणना करने की आवश्यकता होगी, क्योंकि यह अब फ्रेम के सापेक्ष है न कि button1 से।

# change the delete function to:
def delete_buttons():
    button1.place_forget()
    button2.place_forget()

# and button2 to:
button2 = Button(frame, text="delete 1st and 2nd button", command=delete_buttons)
button2.place(relx=0.3, rely=0.55, relwidth=0.4, relheight=0.2)
0
Wups 26 अक्टूबर 2020, 16:38