python에 배경이 투명한 문자와 그림을 창 없이 표시합니다

7682 단어 Python3

하고 싶은 일


・ 소프트웨어를 시작할 때 이미지를 표시하려고 합니다.
· 그림을 표시할 때 창의 상자를 표시하지 않으려고 합니다.
· 이미지를 표시할 때 이미지의 배경이 투명하기를 바랍니다.
・ 시작할 때 이미지를 표시하고 뒤에서 응용 프로그램 바디를 로드한 다음 시작할 때 이미지를 삭제합니다.

작업 환경


Windows10
PyCharm
python3

튀는 스크린이라고 합니다.


흩날리는 체는 소프트웨어를 시작할 때 표시되는 이미지입니다.

어려운 곳


·tkinter로 만든 작은 프로그램의mainloop이 떨어지지 않아 곤란합니다.결과적으로destroy () 대신quit () 를 사용하면 좋습니다.

코드


이것은 튀는 화면에 문자를 표시하는 예입니다.
import tkinter
import win32api
import win32con
import pywintypes


label = tkinter.Label(text='Powered by \nHogeHoge株式会社', font=('メイリオ','40'), fg='snow', bg='white')
label.master.overrideredirect(True)
window_width = 700
window_height = 500
label.master.geometry(str(window_width) + "x" + str(window_height) + "+400+300")
label.master.lift()
label.master.wm_attributes("-topmost", True)
label.master.wm_attributes("-disabled", True)
label.master.wm_attributes("-transparentcolor", "white")

hWindow = pywintypes.HANDLE(int(label.master.frame(), 16))
exStyle = win32con.WS_EX_COMPOSITED | win32con.WS_EX_LAYERED | win32con.WS_EX_NOACTIVATE | win32con.WS_EX_TOPMOST | win32con.WS_EX_TRANSPARENT
win32api.SetWindowLong(hWindow, win32con.GWL_EXSTYLE, exStyle)


def call_back_func():
    print("call_back_funcの実行")
    label.quit()
    # label.destroy()
    # =============================
    # 色々と実験しましたが、結局 quit() すれば、mainloopを抜けることができることを発見しました。
    # destroyではmainloopを抜けられないので、注意されたし。
    # ==============================


label.pack()
# label.after(3000, call_back_func)
# label.after(3000, lambda: label.quit())
label.after(3000, lambda: [print("call_back_funcの実行"), label.quit()])
label.mainloop()

print("quitを実行すれば、mainloopを抜けることができた。\nめでたし、めでたし。")
print("mainloopを抜けた後に、目的のアプリを表示させれば、自分の考えた通りの動作になります。")

실행 결과



너무 좋아요!
3초 뒤에 메인루프 통과도 성공!

코드의 설명


구성 요소의after 함수
after 함수는 리셋 함수입니다.
http://effbot.org/tkinterbook/widget.htm#Tkinter.Widget.after-method
리셋은lambda 함수를 사용할 기회입니다.

도전하다


화면 한가운데에 표시되는 것을 잊었습니다.
·류화.

새로운 문제가 생기다


・ spash screen은 표시하고 삭제할 수 있지만, 나중에 일어선 호스트 응용 프로그램이 일부 검은색 오류를 표시할 수 있음을 확인했습니다.일단 해결되면 수정 코드를 추가합니다.Set Windows Pos에 다시 뜨면 해결될 것 같지만 아무래도 안 될 것 같아요.

이미지 표시 코드


나중에 추가.

좋은 웹페이지 즐겨찾기