إزالة رمز TK على نافذة Tkinter
-
23-08-2019 - |
سؤال
هل يعرف أي شخص كيفية جعل الرمز لا يظهر؟ أنا أبحث عن وسيلة لعدم وجود أيقونة على الإطلاق.
المحلول
على ويندوز
الخطوةالاولى:
قم بإنشاء أيقونة شفافة باستخدام إما محرر أيقونة، أو موقعا مثل 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 لمزيد من التفاصيل: