سؤال

هل يعرف أي شخص كيفية جعل الرمز لا يظهر؟ أنا أبحث عن وسيلة لعدم وجود أيقونة على الإطلاق.

هل كانت مفيدة؟

المحلول

على ويندوز

الخطوةالاولى:

قم بإنشاء أيقونة شفافة باستخدام إما محرر أيقونة، أو موقعا مثل RW-Designer.. وبعد حفظها كما transparent.ico.

الخطوة الثانية:

from tkinter import *

tk = Tk()
tk.iconbitmap(default='transparent.ico')
lab = Label(tk, text='Window with transparent icon.')
lab.pack()
tk.mainloop()

على UNIX.

شيء مماثل، ولكن باستخدام xbm أيقونة.

نصائح أخرى

على غرار الإجابة المقبولة (مع con the upglier):

import tkinter
import tempfile

ICON = (b'\x00\x00\x01\x00\x01\x00\x10\x10\x00\x00\x01\x00\x08\x00h\x05\x00\x00'
        b'\x16\x00\x00\x00(\x00\x00\x00\x10\x00\x00\x00 \x00\x00\x00\x01\x00'
        b'\x08\x00\x00\x00\x00\x00@\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
        b'\x00\x01\x00\x00\x00\x01') + b'\x00'*1282 + b'\xff'*64

_, ICON_PATH = tempfile.mkstemp()
with open(ICON_PATH, 'wb') as icon_file:
    icon_file.write(ICON)

tk = tkinter.Tk()
tk.iconbitmap(default=ICON_PATH)
label = tkinter.Label(tk, text="Window with transparent icon.")
label.pack()

tk.mainloop()

فقط ينشئ الملف على الطاير بدلا من ذلك، لذلك لا يتعين عليك حمل ملف إضافي حوله. باستخدام نفس الطريقة، يمكنك أيضا القيام أيقونة ".xbm" ل UNIX.

تحرير: ICON يمكن تقصيرها أكثر وضوحا magnus hoff.:

import base64, zlib

ICON = zlib.decompress(base64.b64decode('eJxjYGAEQgEBBiDJwZDBy'
    'sAgxsDAoAHEQCEGBQaIOAg4sDIgACMUj4JRMApGwQgF/ykEAFXxQRc='))

بقدر ما أعرف، فإن الأقرب سوف تصل إلى أيقونة "فارغة" يستخدم واحد هو نفس لون شريط عنوان النافذة. ولكن مرة أخرى، يستخدم الكثير من المستخدمين سمات ألوان مختلفة، لذلك لن يذهب بشكل جيد للغاية.

ومع ذلك، إذا كنت تستخدم Py2exe، فيمكنك استخدام شيء مثل هاكر الموارد لمبادلة الرمز. ولكن في بروثون برامج النص، فإن أفضل ما يمكنك فعله هو استبدال. نوع من كيفية استخدام ملفات جرة أيقونة Java، سيكون تطبيقات Tkinter أيقونة TK. بعد كل شيء ... مثل Java، يتم ترجمة تطبيقك بواسطة برنامج متوسط. نظرا لأن برنامج آخر يقوم بتشغيل التعليمات البرمجية الخاصة بك، يجب عليك تعديل هذا البرنامج الآخر. لحسن الحظ Python / TK أكثر مرونة بعض الشيء من JVM من حيث الرموز حتى تتمكن من استبدال الأيقونة. لكن إزالته بالكامل ليس حاليا خيارا.

-يوحنا

بناء على الاستجابات السابقة التي استخدمتها هذا الحل:

from PIL import ImageTk
import zlib,base64
import Tkinter

icon=zlib.decompress(base64.b64decode('eJxjYGAEQgEBBiDJwZDBy'
'sAgxsDAoAHEQCEGBQaIOAg4sDIgACMUj4JRMApGwQgF/ykEAFXxQRc='))
root=Tkinter.Tk()
image=ImageTk.PhotoImage(data=icon)
root.tk.call('wm', 'iconphoto', root._w, image)
root.mainloop()

تحديث:

التعليمات البرمجية المعدلة قليلا (try جملة بدلا من if TkVersion) تنتج أيقونة شفافة (لا) على:

لينكس (النعناع 18.1)، بيثون 2.7

لينكس (النعناع 18.1)، بيثون 3.5.1

ويندوز 10، بيثون 2.7.13

تنتج رمز أسود (لا يعمل) على:

ويندوز 8.1، بيثون 3.6

سؤال قديم إلى حد ما، لكن الحلول لا تعمل من أجلي. لقد وجدت حلا بسيطا جزئيا، مع مسألة متابعة خاصة بي.

الحل الجزئي (TK 8.5، انظر أدناه) - باستخدام صورة فوتوغرافية blank() طريقة:

from Tkinter import *

root=Tk()

icon=PhotoImage(height=16, width=16)
icon.blank()

root.tk.call('wm', 'iconphoto', self.master._w, icon)

root.mainloop()

على Python 2.7، Windows 10، يعمل هذا بشكل جيد، وإنتاج "أي أيقونة" المرغوبة لتطبيقك الجديد.

ومع ذلك، في Python 3.6، Win 8.1، هذا الاختناقات واجهة المستخدم الرسومية، التي أعتقد أنها مرتبطة بأحدث TK 8.6، وعلى الرغم من أنني وجدت أن تدوين 8.6 الجديد لاستخدام wm_iconphoto() هل تمرير غير مجهز في هذه الحالة:

try:
    from tkinter import *
except:
    from Tkinter import * 

root=Tk()

#Identical for Py2.7/Tk8.5 and Py3.5/Tk8.6
icon=PhotoImage(height=16, width=16)
icon.blank()

#Picking a notaion based on Tk version to avoid jamming
try:
    root.wm_iconphoto('True', icon)   #New Tk 8.6 style        
else:
    #Jams Python 3.5 with Tk 8.6 on Windows
    root.tk.call('wm', 'iconphoto', self.master._w, icon)   



root.mainloop()

وهي تنتج أيقونة سوداء في 3.6، بدلا من الشفافية في حالة 2.7 / 8.5.

قد يكون هناك طريقة لتعيين البكسل الشفاف واحدا تلو الآخر باستخدام "مجموعة الشفافية" -http://wiki.tcl.tk/1449.

ومع ذلك، لا أعرف ما إذا كان ذلك ممكنا عبر Tkinter. الله يفضل جريئة، تحول أي شخص آخر؟

تحديث السؤال: لماذا لا يعمل هذا على PY3.6 / Windows؟

البديل ل @ تغيير ubbomb لإضافة الصور المخصصة عن طريق الاستفادة Tkinter.PhotoImageدعم مدمج للمعالجة .gif الصور.

من - الملف:

icon = Tkinter.PhotoImage(file="logo.gif")

من base64:

gif_base64_string = """ R0lGODdhEAAQAIcAAAAAAAEBAQICAgMDAwQEBAUFBQYGBgcHBwgICAkJCQoKCgsLCwwMDA0NDQ4O Dg8PDxAQEBERERISEhMTExQUFBUVFRYWFhcXFxgYGBkZGRoaGhsbGxwcHB0dHR4eHh8fHyAgICEh ... 4B8AAP9Ci/4HoLTpfwD+qV4NoHVAADs= """

icon = Tkinter.PhotoImage(data=gif_base64_string)

رابط effbot.org لمزيد من التفاصيل:

http://effbot.org/tkinterbook/photoimage.htm.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top