Canvas anpassen

Fragen zu Tkinter.
Antworten
Mr.White
User
Beiträge: 46
Registriert: Samstag 7. März 2015, 20:03

Hallo,
Ich möchte gerne das sich der Canvas anpassen lässt, habs schon
mit height und width etc versucht aber er will nicht...
Der Code:


EDIT: HABS GEFUNDEEN
EDIT2: Doch nicht...

Code: Alles auswählen


class Chat(tk.Frame):
    def __init__(self, master=None, username="Anonym"):
        tk.Frame.__init__(self, master)
        self.username = username
        self.pack()
        self.createWidgets()
        self.con = MySQL()

    def createWidgets(self):
        #Canvas
        self.canvas = tk.Canvas(self, relief="ridge", bd=2, bg = "white", width= 400, height = 600, scrollregion=(0,0,500,500))
        self.Scrollbar = tk.Scrollbar(self.canvas, orient="vertical")
        self.Scrollbar.pack(side="right", fill="y")
        self.Scrollbar.config(command=self.canvas.yview)
        self.canvas.config(yscrollcommand=self.Scrollbar.set)
        self.canvas.pack(expand=True, fill="both")
        self.text_id = self.canvas.create_text(5,10, anchor="nw", text="Wilkommen!")


        ##Input
        self.userinput = tk.Entry(self, width=90)
        self.userinput.pack(side="bottom", fill="x")

        #Senden
        self.sendMsg = tk.Button(self)
        self.sendMsg["text"] = "Senden"
        self.sendMsg["command"] = self.extraCon
        self.sendMsg.pack(side="right")


BlackJack

@Mr.White: Was soll denn auf dem Canvas dargestellt werden? Der Chatverlauf? Das würde ich ja in einem `Text`-Widget machen.
Mr.White
User
Beiträge: 46
Registriert: Samstag 7. März 2015, 20:03

Ja, aber ich möchte das halt gerne im Canvas.
Meine Frage ist halt - wieso kann ich die größe nicht ändern.
BlackJack

@Mr.White: Das wird kompliziert werden mit dem Canvas und ist ziemlich wahrscheinlich das falsche Ende bei dem man mit einer Chatanwendung anfangen sollte. Da besteht die Gefahr das Du irgendwann wieder frustriert das Projekt hinschmeisst weil Du die grafische Darstellung auf die komplizierteste Weise machen willst, obwohl noch nicht einmal der Chat selber programmiert ist. Sinnvoller wäre es erst einmal einen einfachen Chat mit einer möglichst einfachen Darstellung zum laufen zu bekommen und das ganze selberzeichnen danach zu machen.

Die Grösse ändert sich in dem Rahmen den man dem Canvas gibt, und dessen Grösse ändert sich halt nicht. Da müsste man auch sagen das der expandieren darf/soll und zwar in beide Richtungen.

Widget-Objekte sollten sich übrigens nicht selbst „layouten“, das macht keines der von Tk angebotenen Widgets weil das dem Aufrufer die Freiheit nimmt das Widget flexibel zu verwenden.
Mr.White
User
Beiträge: 46
Registriert: Samstag 7. März 2015, 20:03

Das Grundsystem vom Chat steht bereits. Ist nur noch bearbeitungsbedürftig bzgl. der Namensgebung.
Ich will das man den Chatverlauf nicht einfach bearbeitet mit nem Textfeld.. Mit dem Label hatte ich
das Problem das ich keine Scrollbar einfügen kann.

Wollte lediglich wissen wie ich den Canvas dazu zwinge das er sich expandiert. Mehr nicht.
BlackJack

@Mr.White: Man kann bei einem `Text`-Widget das bearbeiten durch den Benutzer verhindern.
Mr.White
User
Beiträge: 46
Registriert: Samstag 7. März 2015, 20:03

Würde trotzdem gerne die Frage beantwortet haben.
Wie zwinge ich den Canvas dazu das er sich expandiert.
BlackJack

@Mr.White: Die Frage habe ich doch schon beantwortet: Dein Problem ist hier nicht der Canvas, der expandiert schon so weit er kann, sondern der `Frame` in dem er steckt, der sich eben nicht expandiert weil ihm das niemand gesagt hat.
Mr.White
User
Beiträge: 46
Registriert: Samstag 7. März 2015, 20:03

Oh sorry, hab ich übersehen.

Aber danke für die restlichen tipps.
Antworten