Seite 1 von 1

Canvas anpassen

Verfasst: Dienstag 12. Mai 2015, 15:03
von Mr.White
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")



Re: Canvas anpassen

Verfasst: Dienstag 12. Mai 2015, 15:26
von BlackJack
@Mr.White: Was soll denn auf dem Canvas dargestellt werden? Der Chatverlauf? Das würde ich ja in einem `Text`-Widget machen.

Re: Canvas anpassen

Verfasst: Dienstag 12. Mai 2015, 15:33
von Mr.White
Ja, aber ich möchte das halt gerne im Canvas.
Meine Frage ist halt - wieso kann ich die größe nicht ändern.

Re: Canvas anpassen

Verfasst: Dienstag 12. Mai 2015, 16:32
von 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.

Re: Canvas anpassen

Verfasst: Dienstag 12. Mai 2015, 18:42
von Mr.White
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.

Re: Canvas anpassen

Verfasst: Dienstag 12. Mai 2015, 20:28
von BlackJack
@Mr.White: Man kann bei einem `Text`-Widget das bearbeiten durch den Benutzer verhindern.

Re: Canvas anpassen

Verfasst: Mittwoch 13. Mai 2015, 15:30
von Mr.White
Würde trotzdem gerne die Frage beantwortet haben.
Wie zwinge ich den Canvas dazu das er sich expandiert.

Re: Canvas anpassen

Verfasst: Mittwoch 13. Mai 2015, 15:34
von 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.

Re: Canvas anpassen

Verfasst: Mittwoch 13. Mai 2015, 15:53
von Mr.White
Oh sorry, hab ich übersehen.

Aber danke für die restlichen tipps.