Spezielle Ausrichtung in Menu-Wigdet

Fragen zu Tkinter.
Benutzeravatar
Michael Schneider
User
Beiträge: 569
Registriert: Samstag 8. April 2006, 12:31
Wohnort: Brandenburg

numerix hat geschrieben:Die ausbleibenden Reaktionen deute ich mal als "Es gibt keine wirkliche Lösung."
Hi,

ich bin ziemlich sicher, dass ich vor ein paar Jahren etwas zu dem Thema in einem Buch gelesen habe. Werde mal recherchieren.

Grüße,
der Michel

ps. Tkinter ist klasse: simpel und (fast) überall verfügbar!
Diese Nachricht zersört sich in 5 Sekunden selbst ...
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Michael Schneider hat geschrieben:ich bin ziemlich sicher, dass ich vor ein paar Jahren etwas zu dem Thema in einem Buch gelesen habe. Werde mal recherchieren.
Das wäre toll!
Michael Schneider hat geschrieben:ps. Tkinter ist klasse: simpel und (fast) überall verfügbar!
Jawolll! 8)
Benutzeravatar
wuf
User
Beiträge: 1529
Registriert: Sonntag 8. Juni 2003, 09:50

Hallo numerix

Ich habe einmal mit der Menu-Darstellung herumgespiel. Dies nur auf Canvas-Ebene. Dein Code-Snippet habe ich nicht weiter analisiert. Ich habe nur gesehen, dass du ein Canvas verwendest um die Ausrichtung hinzukriegen. Wenn du proportionale Schriften auf einer Canvas anwendest solltest du strickt Pixel-Werte für die geometrischen Abstände verwenden.

Bei meinem neuen Menu verwende ich die elementarsten Tk-Widgets wie Canvas, Toplevel, Frame und die in Tkinter reichlich verfügbaren (genialen) Canvas-Methoden.
Ich ziehe keine Instanz von der Tk-Klasse 'Menu'. OK es gibt ein paar Zeilen Code dessen Anzahl gewisse Leute wieder als übermässig viel klassifizieren werden. .:lol:

Ich stelle dir einmal mein Code-Snippet zum experimentieren zur Verfügung. Es ist noch kein Menu-Widget!.Es zeigt nur die Darstellung von Textzeilen mit Pixel-Definierbaren Abständen.

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: UTF-8 -*-

# Skriptname fws_menu_research_01.py 06.07.2008
# Menu-Darstellungsversuche

import Tkinter as tk

CANCEL16_data =\
'''
R0lGODlhEAAQAMZgAL43OsU0OMozNrY8P84yNc8y
Nss0N8w0N8s1OMw1ONMyNtQyNtIzN9MzN9cyNuM0
OOQ0OOM1OeQ1OM8+QuA4POs3O+s3POVESP87QP88
QP88Qv89QuJKTv8+Q+RKTuVKTuZKTf9AReBRVPtH
TPhJTfxITPxITfxKTtxbXvZQVORYXNVfYeNbXttl
aOxlaOBsb+5matxvcvJmaehucul0eP9tceV6fOp6
fvx0d+aAgvx3evh7fuWNj+eNkOiOkOaQkvKMj+aS
lOyQk+SYmvKTleyfoemho+qkpvWoquywse64uvC5
u++6vPHExvLJyvLJy/PMzPTOzv/Oz/7Q0fTV1vrY
2fba2vbd3vji4vjj5Pjk5fno6Prr7Prt7fvy8vzy
8v//////////////////////////////////////
////////////////////////////////////////
////////////////////////////////////////
/////////yH+FUNyZWF0ZWQgd2l0aCBUaGUgR0lN
UAAh+QQBCgB/ACwAAAAAEAAQAAAHuYB/goOEhYUM
DhAiKBILAoZ/DSBIWl5eXEsqBIcuVFifoFc2m4IF
H01WX1GrUalQLAGCC0JKXWBdSkpPYGBOQwqCFEZH
R1tgW0y8SSQYD4IcPD9BQVm8YEQpGhkVghczNDcy
O7xSG+YaFgN/ESPtOORg5R0hErImJzq8NRtSYFMl
JoD9EeABRhUwQGAoPAjEA4BBB17kKJKjYsUiLwwU
StCih4+PPnq0QAApwIQVMWKsmPAQEiF1hgIBADs=
'''

FILEOPEN16_data =\
'''
R0lGODlhEAAQAOe1AAALuwALvAAMuQASpgAQtQAS
qwASsAAWrgAVwAAYvAAZyAQftgAeyQAk0gcmyQgq
uA8prgAp2gQxvxUrtwMzwwYw2hYzqgg/yh06rgg8
5CFAshFKzyVHuBZL4zFIxBZP7StPvTlRuzFWxB1Z
6yFc0zhTzi9Y0SZd5zddyilj1zte2ihk8jpi0Cdn
9jxl0Dln0zBq8zlr20Fp0kBn4Vpju0Fr1Thw20Ru
1UZw2l1rwy59/ER83WhywEZ/3jyA+0iA3kmA4EiB
3kmB4Fp72DeG/kuD4EuD51h96EeE+U6E50+G4HJ6
xVKI5EyI+2+Cz0+O52CH4kaQ/liN6FWQ42SN4mGP
50uW/oKIzG6P3VeY+VmY/HSR3myW5mWZ816c/ImV
12Sk+WWk/m+j8nif84ag54aj6G+r/nar7puh24mo
6ICv842r64iu96Oo3aGq3aqqyn24/ZKy8Je26IW/
9Y+89Y+98ZW77LWyz7Wy1o/E+5fA/IXM/p/C8Lu4
2p/F96fC9b+917HF8cXD4MTD5KLV+Jva/M7K4cjO
86be/K/a/tHO5qne/rjY+M7Q8NHT7a/m/NvX7NzY
6bns/Lnt/tze99Dk+N7e9+Le8cjt/r/y/uPi+Obk
+9rr/Obm++vn8ujo++np++zp98j7/uzr/Mr8/sv9
/u7u/tX7/c/+/vHx+/Lx/vLy/vbz/OH+/vn2+/f3
/vv2/v34/vz8/v79/v7+/v//////////////////
////////////////////////////////////////
////////////////////////////////////////
////////////////////////////////////////
////////////////////////////////////////
////////////////////////////////////////
////////////////////////////////////////
////////////////////////////////////////
/yH+FUNyZWF0ZWQgd2l0aCBUaGUgR0lNUAAh+QQB
CgD/ACwAAAAAEAAQAAAI7gD/CRxIsKBBgjyWHDR4
pRElGgRJSEliZIPANqBUjUJDUIgkRIXOOHEka1Wn
TZZyDFRC6pEdN6lovTL1SdOhLwOLiJIziJZPWrFg
bcEBhYWJB0BK1cESZ02aMmSGxMgSxcqJBT1QPaHy
xw8dNWK6hCGiY0SCAzsy2eBU6dQiOFp8tOjgAACB
fz/mVGlFKI+ZJjA+VGCAIICBf0Gm8Jm0B4wXJCsy
RGigQECBfymYMMKUSA+bMUdmqCjhYYLAC1xm0ZrF
KtQlSIoE9cETQiCFQD9pufIUyRCgO28gCJTw4kYN
GS5QiADBQQMGCwMEBgQAOw==
'''

def name_width(text):
    """Ermittelt die Breite und Höhe des Namens in Pixel"""

    name_obj = dummy_canvas.create_text(
        0,0,
        text = text,
        font = menu_font
        )
    x1,y1,x2,y2 = dummy_canvas.bbox(name_obj)

    return ((x2-x1),y2)

root = tk.Tk()
root.geometry('500x250')
root.title('Canvas-Menu')
root['bg'] = 'steelblue2'

ICON_FILEOPEN = tk.PhotoImage(data=FILEOPEN16_data)
ICON_CANCEL   = tk.PhotoImage(data=CANCEL16_data)

frame = tk.Frame(root,
    )
frame.place(x=10,y=10)

dummy_canvas = tk.Canvas(frame,
    )
dummy_canvas.pack()

menudata = {
    "Datei":[
    (None,"Neu","Strg+N","Control-n"),
    (ICON_FILEOPEN,"Öffnen","Strg+O","Control-o"),
    (None,"Speichern","Strg+S","Control-s"),
    (None,"Speichern unter","Strg+Umschalt+S","Control-Shift-S"),
    (ICON_CANCEL,"Beenden","","")]}

#~~ Geometrie
meun_start_gap   = 5
menu_inter_gap   = 20
menu_end_gap     = 20
menu_icon_width  = 20
menu_icon_height = menu_icon_width

#~~ Zeichensatz
menu_font = ('Helvetica','10','normal','roman')

text_height        = 0
max_item_width     = 0
max_shortcut_width = 0

for icon,item,shortcut1,shortcut2 in menudata['Datei']:
    item_width,height = name_width(item)
    if max_item_width < item_width:
        max_item_width = item_width

    shortcut_width,height = name_width(shortcut1)
    if max_shortcut_width < shortcut_width:
        max_shortcut_width = shortcut_width

text_height = height

if text_height < menu_icon_height:
    menu_bar_height = menu_icon_height + 4
else:
    menu_bar_height = text_height + 4

max_menu_bar_width = menu_icon_width + meun_start_gap + max_item_width +\
    menu_inter_gap + max_shortcut_width + menu_end_gap

xpos_item = menu_icon_width + meun_start_gap
xpos_shortcut = xpos_item + max_item_width + menu_inter_gap +\
    max_shortcut_width

dummy_canvas.destroy()

print menu_bar_height,text_height

for index,data in enumerate(menudata['Datei']):
    icon,item,shortcut = data[0:3]

    menu_bar = tk.Canvas(frame,
        width  = max_menu_bar_width,
        height = menu_bar_height,
        highlightthickness = 0
        )
    menu_bar.pack(side='top')

    if icon:
        menu_bar.create_image(
            menu_icon_width/2,menu_bar_height/2,
            image  = icon,
            anchor = 'center'
            )

    if item != "":
        menu_bar.create_text(
            xpos_item, float(menu_bar_height)/2.0,
            text = item,
            font = menu_font,
            anchor = 'w'
            )

    if shortcut != "":
        menu_bar.create_text(
            xpos_shortcut, float(menu_bar_height)/2.0,
            text   = shortcut,
            font   = menu_font,
            anchor = 'e',
            )

root.mainloop()
Eventuell kannst du etwas davon für dein Code-Snippet verwenden.

OK. Gruss :wink:
Take it easy Mates!
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Optisch (und mehr ist es ja noch nicht) sieht es wirklich ansprechend aus.

Das mit der pixelweisen Berechnung/Ausrichtung ist klar, das ist ja auch der einzige Grund, warum ich für die rechtsbündige Ausrichtung der Shortcuts im Menü ein Canvas einsetze. Anders als bei der Beschränkung auf ein reines Canvas (wie bei deinem Beispiel) bleibt mir bei Verwendung des Tk-Menu-Widgets aber nichts anderes übrig, als den Zwischenraum zwischen Menüname links und Shortcut rechts mit Leerzeichen aufzufüllen.

Das geht eben nicht aufs Pixel genau, sondern liefert kleine Abweichen bis max. 1 px weniger als die Breite eines Leerzeichens im verwendeten Zeichensatz.

Gebrauchen kann ich deinen Code leider nicht, weil ich (der Einfachheit halber) gerne auf der Funktionalität des Menu-Wigdets aufsetzen will.
Benutzeravatar
Michael Schneider
User
Beiträge: 569
Registriert: Samstag 8. April 2006, 12:31
Wohnort: Brandenburg

Hallo Numerix,

ich kann mir gut vorstellen, dass es Probleme bei proportionaler Schrift gibt. Aber braucht man die in Menüeinträgen unbedingt? Wenn nicht, kann man sie doch ausschalten und dann die Menüeinträge formatieren:

Code: Alles auswählen

import Tkinter as tk

root = tk.Tk()
root.geometry("400x300+100+100")

file_menu_entries = ({"label":("oeffnen", "strg+o"), 
                          "underline":0, 
						  "command":None},
						  
                     {"label":("speichern", "foo+s"), 
					      "underline":0, 
						  "command":None},
						  
					 {"label":("beenden", "alt+b"), 
					     "underline":0, 
						 "command":root.destroy})

menubar = tk.Menu(root)
file_menu = tk.Menu(menubar, tearoff=False)

menubar.add_cascade(label="datei", menu=file_menu, underline=0)

for fme in file_menu_entries:
	file_menu.add_command(label="%-10s %7s"%fme["label"], 
	                      command=fme["command"], 
						  underline=fme["underline"])

root.config(menu=menubar)
root.mainloop()
Muss es proportionale Schrift sein?

Gruß,
Michael
Diese Nachricht zersört sich in 5 Sekunden selbst ...
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Naja, was heißt "MUSS"?
Natürlich MUSS es nicht, aber ich hätte halt gerne auch, dass es - trotz Tkinter - optisch anständig aussieht. Was du mit "ausschalten" der proportionalen Schriften meinst, weiß ich jetzt zwar nicht, aber ich kann ja via font-Option die Schriftart setzen. Natürlich habe ich das auch mit fixen Schriften gemacht und damit ist die Ausrichtung natürlich kein Problem mehr, aber

a) entweder wählt man für die immer sichtbare Menüleiste die gleiche Schrift; dann sieht das echt aus wie von vorgestern
b) oder man wählt nur für die ausklappenden Menüs die fixe Schrift (was ja zur Problemlösung genügen würde). Das sieht dann aber beim ausklappen aus wie Hund.

Dein Code hilft da jetzt eigentlich gar nicht weiter. Da du keinen Font vorgibst, wird die Systemvoreinstellung verwendet. Bei mir ist das eine proportionale Schrift und es sieht eben dann nicht schön aus: Die Shortcuts flattern - sind weder rechts- noch linksbündig.
Benutzeravatar
Michael Schneider
User
Beiträge: 569
Registriert: Samstag 8. April 2006, 12:31
Wohnort: Brandenburg

numerix hat geschrieben:Dein Code hilft da jetzt eigentlich gar nicht weiter. Da du keinen Font vorgibst, wird die Systemvoreinstellung verwendet. Bei mir ist das eine proportionale Schrift und es sieht eben dann nicht schön aus: Die Shortcuts flattern - sind weder rechts- noch linksbündig.
Hi numerix,

ich wollte eigentlich nur die Formatierung demonstrieren, ist dann aber etwas mehr geworden. Die Schriftart würde ich, wie Du schon sagtest, über die font-Resource festlegen.
Deine Einstellung, dass eine monospaced Type irgendwie altmodisch oder "wie Hund" aussieht, kann ich absolut nicht teilen. Ich würde jederzeit, zumindest für Menüs, eine nicht proportionale Schrift den Proportionalen vorziehen.

Gruß,
Michael

ps. Das Buch hatte ich mir vermutlich ausgeliehen und ich komme frühestens Donnerstag wieder in die Bib.
Diese Nachricht zersört sich in 5 Sekunden selbst ...
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Michael Schneider hat geschrieben:Deine Einstellung, dass eine monospaced Type irgendwie altmodisch oder "wie Hund" aussieht, kann ich absolut nicht teilen. Ich würde jederzeit, zumindest für Menüs, eine nicht proportionale Schrift den Proportionalen vorziehen.
Tja, so sind eben die Geschmäcker verschieden. :wink:
Das Buch hatte ich mir vermutlich ausgeliehen und ich komme frühestens Donnerstag wieder in die Bib.


Mach dir keine unnötigen Umstände. Und eilig ist es ja auch nicht!
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

numerix hat geschrieben:Ich habe den Code jetzt fertig gemacht: http://paste.pocoo.org/show/78442/
Hab den mal geändert: http://paste.pocoo.org/show/95864/
diff: http://paste.pocoo.org/compare/95864/78442/

Aber so gefällt mir das noch nicht. IMHO sollte kein Handler für alle Menü-Punkte definiert werden.
Außerdem sollte das bauen des Menüs in MenuPlus verschoben werden...

Auch halte ich es für überflüssig shortcut und keycode zu trennen. Warum nicht für beides den keycode nutzten?

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Ich hab mal in die Sourcen der IDLE geschaut (.Lib\idlelib\EditorWindow.py) demnach ist das Formatieren über ein Canvas vollkommen überflüssig, wenn man menu.entryconfig() nutzt ;)

Ich versuche mal das ganze umzubauen...

EDIT: So, fertig: http://paste.pocoo.org/show/95874/
Ist alles so viel einfacher...

Aber noch eine dumme Sache:

Wenn man auf ein Menu-Punkt über den keycode aufgerufen wird, wird dabei der Methode tk.event übergeben. Wenn man mit der Maus drauf klickt aber nicht.
Deswegen hab ich überall *args eingefügt. Ist aber unschön. Wie geht's einheitlich?

EDIT: Ich denke die IDLE macht es ähnlich z.B.:

Code: Alles auswählen

    def help_dialog(self, event=None):
Zuletzt geändert von jens am Donnerstag 18. Dezember 2008, 16:15, insgesamt 1-mal geändert.

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Da warst du aber echt fleißig!

Die Trennung von shortcut und keycode war in meinem Fall erforderlich, weil die Menüeinträge deutschsprachig waren.

Was mir damals gefehlt hat, war nicht entryconfig, sondern die accelarator-Option! In der von mir damals verwendente Doku (die von Shipmann) fehlt die nämlich. Tja, hätte ich mir die ganze Canvas-Bastelei sparen können! :evil: (Zwar sind die Shortcuts so nicht rechtsbündig, aber immerhin linksbündig alle ordentlich untereinander, damit kann ich auch leben).
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

numerix hat geschrieben:Die Trennung von shortcut und keycode war in meinem Fall erforderlich, weil die Menüeinträge deutschsprachig waren.
Hm. OK, wobei man das vielleicht geschickter bzw. automatisch lösen könnte... Man könnte vielleicht einfach z.B. .replace("Shift", "Umschalt") machen.

oder gettext nutzten und dann: .replace("Shift", _("Shift"))

EDIT: So der code ist nun hier zu finden: http://trac.pylucid.net/browser/CodeSni ... nter-tools
Wird aber bald transferiert nach: http://code.google.com/p/python-code-snippets

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Py-Prog
User
Beiträge: 673
Registriert: Dienstag 16. Februar 2010, 17:52
Wohnort: G:\ermany

Euere lösungen sind alle in Python 2.x geschrieben, gibt's da nichts neues in 3.1.1 oder in die richtung? Wenn's sein muss stell ich 2to3 in den Pastebin.
Technik ist: wenn alles funktioniert und keiner weiß warum.
Wer Rechtschreibfehler findet darf sie behalten.
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Py-Prog hat geschrieben:Euere lösungen sind alle in Python 2.x geschrieben, gibt's da nichts neues in 3.1.1 oder in die richtung? Wenn's sein muss stell ich 2to3 in den Pastebin.
Hast du dir mal die "Mühe" gemacht, und den Code daraufhin untersucht? Offenbar nicht. Hättest du das getan, dann hättest du z.B. festgestellt, dass in dem von mir geposteten Code (http://paste.pocoo.org/show/78442/) nicht mehr zu tun ist, als Tkinter in tkinter umzubenennen und print mit Klammern auszustatten!

Du lernst übrigens mehr, wenn du deine Programme nicht aus gesammelten Snippest zusammenflickst, sondern selbst mal was probierst.
Py-Prog
User
Beiträge: 673
Registriert: Dienstag 16. Februar 2010, 17:52
Wohnort: G:\ermany

numerix hat geschrieben:
Py-Prog hat geschrieben:Euere lösungen sind alle in Python 2.x geschrieben, gibt's da nichts neues in 3.1.1 oder in die richtung? Wenn's sein muss stell ich 2to3 in den Pastebin.
Hast du dir mal die "Mühe" gemacht, und den Code daraufhin untersucht? Offenbar nicht. Hättest du das getan, dann hättest du z.B. festgestellt, dass in dem von mir geposteten Code (http://paste.pocoo.org/show/78442/) nicht mehr zu tun ist, als Tkinter in tkinter umzubenennen und print mit Klammern auszustatten!

Du lernst übrigens mehr, wenn du deine Programme nicht aus gesammelten Snippest zusammenflickst, sondern selbst mal was probierst.
Ich weiß, aber schönlangsam wird das forum verwierend! Einerseits soll man seine Programme selber eintwickeln und nicht 'klauen' (was ich eigentlich auch lieber mache weil ich sonst nie sagen kann das Programm ist selbst entwickelt), und andererseits heißt es wozu das rad neu erfinden?, nur mal als beispiel. Und wegen dem nicht untersuchen, das hab ich absichtlich nicht gemacht weil das bisher immer nicht so einfach war.
Technik ist: wenn alles funktioniert und keiner weiß warum.
Wer Rechtschreibfehler findet darf sie behalten.
Py-Prog
User
Beiträge: 673
Registriert: Dienstag 16. Februar 2010, 17:52
Wohnort: G:\ermany

Hat funktioniert! Danke !

Hm jetzt muss ich wohl numerix mit in die Credits schreiben. :wink:
Technik ist: wenn alles funktioniert und keiner weiß warum.
Wer Rechtschreibfehler findet darf sie behalten.
Py-Prog
User
Beiträge: 673
Registriert: Dienstag 16. Februar 2010, 17:52
Wohnort: G:\ermany

Hey wie wärs mit der änderung?

Code: Alles auswählen

def handler(self,event=None,name=""):
        """Dummy-Handler für Menü-Events."""
        name=name.replace(' ', '_')+'()'
        exec(name.lower())
Und wenn(/falls) ich mit dem rest was noch fehlt fertig bin stell ich's auch noch rein.
Zuletzt geändert von Py-Prog am Samstag 18. September 2010, 17:17, insgesamt 1-mal geändert.
Technik ist: wenn alles funktioniert und keiner weiß warum.
Wer Rechtschreibfehler findet darf sie behalten.
lunar

@Py-Prog: Der kleine, aber feine Unterschied zwischen dem „Wiederverwenden“ und dem „Klauen“ bemisst sich aus dem Grad der Eigeninitiative, welche Du dabei zeigst. „Wiederverwendung“ bedeutet, mithilfe existierender Bibliotheken und Lösungen selbstständig eine Lösung für das eigene Problem zu finden. Dagegen „klaut“ man Quelltext, wenn man einfach unreflektiert und ohne selbstständige Arbeit einfach eine fertige Lösung hernimmt, und sich danach sogar noch – wie hier geschehen – über diese Lösung beschwert, ohne selbst versucht zu haben, diese zu verbessern.

Mag sein, dass Du Dir wirklich nicht zugetraut hast, diese Lösung auf Python 3 zu portieren, mag sein, dass Du wirklich einfach nur nach Hilfe fragen wolltest. Dein Beitrag aber zeigt nicht die geringsten Anzeichen von selbstständiger Arbeit und Eigeninitiative, Du hast Dir ganz offensichtlich nicht die geringste Mühe gemacht. Du hast einfach nur eine Frage nach einer Python-3-Version hingeklatscht, noch dazu in einer Art, die suggeriert, dass Du einfach nur schnell und möglichst bequem eine Lösung haben möchtest. Letztlich spricht aus jedem Satz Deines Beitrags fehlende Eigeninitiative, ja fast schon Faulheit.

Ich sage wohlgemerkt nicht, dass Du wirklich faul bist, ich sage nur, welchen Eindruck Deine Beiträge hinterlassen. Denk doch mal darüber nach, wie Deine Beiträge auf andere wirken ...
Py-Prog
User
Beiträge: 673
Registriert: Dienstag 16. Februar 2010, 17:52
Wohnort: G:\ermany

lunar hat geschrieben:@Py-Prog: Der kleine, aber feine Unterschied zwischen dem „Wiederverwenden“ und dem „Klauen“ bemisst sich aus dem Grad der Eigeninitiative, welche Du dabei zeigst. „Wiederverwendung“ bedeutet, mithilfe existierender Bibliotheken und Lösungen selbstständig eine Lösung für das eigene Problem zu finden. Dagegen „klaut“ man Quelltext, wenn man einfach unreflektiert und ohne selbstständige Arbeit einfach eine fertige Lösung hernimmt, und sich danach sogar noch – wie hier geschehen – über diese Lösung beschwert, ohne selbst versucht zu haben, diese zu verbessern.

Mag sein, dass Du Dir wirklich nicht zugetraut hast, diese Lösung auf Python 3 zu portieren, mag sein, dass Du wirklich einfach nur nach Hilfe fragen wolltest. Dein Beitrag aber zeigt nicht die geringsten Anzeichen von selbstständiger Arbeit und Eigeninitiative, Du hast Dir ganz offensichtlich nicht die geringste Mühe gemacht. Du hast einfach nur eine Frage nach einer Python-3-Version hingeklatscht, noch dazu in einer Art, die suggeriert, dass Du einfach nur schnell und möglichst bequem eine Lösung haben möchtest. Letztlich spricht aus jedem Satz Deines Beitrags fehlende Eigeninitiative, ja fast schon Faulheit.

Ich sage wohlgemerkt nicht, dass Du wirklich faul bist, ich sage nur, welchen Eindruck Deine Beiträge hinterlassen. Denk doch mal darüber nach, wie Deine Beiträge auf andere wirken ...
1.) hab ich mich nicht beschwert sondern das nur reingestellt weil vieleich noch jemand die lösung haben will , ohne groß nachzudenken
2.) Ich hab schon öffters versucht code aus dem Pastebin zu portieren, aber da kammen nur fehler, so wie du es verstanden hast war das echt nicht gemeint

Und Danke das du mich auf meine fehler hinweist, werde versuchen mich zubessern. :)
Technik ist: wenn alles funktioniert und keiner weiß warum.
Wer Rechtschreibfehler findet darf sie behalten.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Py-Prog hat geschrieben:1.) hab ich mich nicht beschwert sondern das nur reingestellt weil vieleich noch jemand die lösung haben will , ohne groß nachzudenken
Und warum sollte man dem helfen? Wenn man etwas haben will, es aber nicht selbst machen will gibt es so Konzepte wie für Arbeit bezahlen. Das Forum gibt gerne Wissen weiter, aber umsonst Arbeit verrichten ist nicht drin.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten