Moderators Spect~ Δημοσ. 6 Μαΐου 2016 Moderators Δημοσ. 6 Μαΐου 2016 Θελω λιγο τα φωτα σας γιατι το κεφαλι μου κοντευει να εκραγει. Φτιαχνω GUI για μια εφαρμογη και δουλευω με tabs. Η εφαρμογη ειναι για τσατ στα δεξια ειναι το widget που εμφανιζει τα μυνηματα, αριστερα του η λιστα με τα ατομα στα οποια μπορει να στειλει και απο κατω ενα entry box με ενα κουμπι στο οποιο γραφεις το μυνημα για να το στειλεις. Το προβλημα που εχω ειναι οτι καθε φορα που δημιουργω ενα tab κανει focus σε αυτο και δουλευει μονο αυτο (δουλευει παντα μονο το τελευταιο). Οτι και να εχω δοκιμασει δεν δουλεψε. Καμια ιδεα!? Η συναρτηση στην οποιο δημιουργω τα tab ειναι στο σποιλερ def add_tab(self, name): padX = 10 padY = 10 frame1 = Frame(self.notebook) self.notebook.add(frame1, text=name) self.notebook.bind_all('<<NotebookTabChanged>>') self.notebook.pack() parentFrame = Frame(frame1) parentFrame.grid(padx=padX, pady=padY, stick=E + W + N + S) readChatGroup = Frame(parentFrame) self.receivedChats = Text(readChatGroup, bg='white', width=60, height=30, state=DISABLED) self.friends = Listbox(readChatGroup, bg='white', width=30, height=30, font=('Fixed', 10), selectmode=BROWSE) self.friends.grid(row=0, column=1, sticky=E + N + S) self.friends.bind('<Double-Button-1>', self.list_item_click) lines = tuple(open('list.txt', 'r')) for line in range(1, len(lines)): self.friends.insert(line, lines[line]) writeChatGroup = Frame(parentFrame) self.chatVar = StringVar() self.chatField = Entry(writeChatGroup, width=80, textvariable=self.chatVar) sendChatButton = Button(writeChatGroup, text='Send', width=10, command=self.handleSendChat) self.receivedChats.grid(row=0, column=0, sticky=W + N + S, padx=(0, 10)) self.chatField.grid(row=0, column=0, sticky=W) sendChatButton.grid(row=0, column=1, padx=5) readChatGroup.grid(row=1, column=0) writeChatGroup.grid(row=2, column=0, pady=10) writeChatGroup.grid(padx=padX, pady=padY, stick=E + W + N + S)
k33theod Δημοσ. 7 Μαΐου 2016 Δημοσ. 7 Μαΐου 2016 Δοκίμασε να απενεργοποιήσεις κάποια τμήματα κώδικά για να δείς που περίπου είναι το λάθος. Άν είναι σαυτή τη συνάρτηση γιατί μπορεί να είναι και κάπου άλλου στον κώδικά σου. To writeChatGroup το κάνεις grid 2 φορές κάντο μία writeChatGroup.grid(row=2, column=0, padx=padX, pady=padY, sticky=E + W + N + S) κάνε όλα τα stick sticky Στο bind_all έχεις event χωρίς event handler. Αν έχεις κάνει το from tkinter import ttk κάνε το Frame ttk.Frame μήπως δεν συνεργάζεται καλά με το σκέτο Frame γιατί το Notebook το υποστηρίζει μόνο το ttk Τα self.notebook.bind_all('<<NotebookTabChanged>>')(αυτό είναι χωρίς event handler)και self.notebook.pack() καλύτερα να τα βάλεις στη συνάρτηση που δημιουργεί το Notebook έτσι κάθε φορά που κάνεις μια καρτέλα ξαναδημιουργείς event και ξανακάνεις pack το notebook πράγμα που πρέπει να γίνει μία φορά. Δεν ξέρω αν τα παραπάνω δημιουργούν το πρόβλημα γιατί δεν μπορώ να το δοκιμάσω. Αν θές βάλε τα grid κάτω από τη δημιουργία του κάθε widget και αραίωσε λίγο τον κώδικα γιατί έτσι διαβάζεται κάπως δύσκολα
Moderators Spect~ Δημοσ. 7 Μαΐου 2016 Μέλος Moderators Δημοσ. 7 Μαΐου 2016 για την ωρα το εκανα χωρις tab γιατι μου σπασε τα νευρα! Θα δοκιμασω ομως αυτα που ειπες μολις βρω χρονο και θα ενημερωσω
Moderators Spect~ Δημοσ. 8 Μαΐου 2016 Μέλος Moderators Δημοσ. 8 Μαΐου 2016 με μια γρηγορη ματια που εριξα και τις αλλαγες που ειπες δεν αλλαξε κατι. Τουλαχιστον ειδα οτι το gui γαμιεται οταν αλλαζω απο windows σε unix οποτε εφτιαξα αυτο επισης ειχα βγαλει τον event handler γιατι κατι δοκιμαζα!
k33theod Δημοσ. 8 Μαΐου 2016 Δημοσ. 8 Μαΐου 2016 Είναι πιθανό το πρόβλημα να μην είναι σ'αυτή τη συνάρτηση αλλά κάπου αλλού.
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα