Brak programu w pasku zadań.

Brak programu w pasku zadań.
M.
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 9
0

Cześć, od jakiegoś czasu próbuję stworzyć pewien program w Python, a jako że nie mam ani wiedzy, ani doświadczenia to korzystam z pomocy sztucznej inteligencji...i ogólnie program taki jaki chciałem udało mi się zrobić, ale jest pewien problem - z racji tego, że ma to być dodatek/mod do gry (bez żadnej ingerencji w kod gry, zupełnie zewnętrzny program) jednymi z głównych atrybutów jest to, że jest on zawsze bezwzględnie na wierzchu (po uruchomieniu gry, pozostaje widoczny) oraz nie ma ramki okna i to jest OK - działa przy testowaniu (F5 w Pythonie) :)
ale kiedy zrobiłem instalke to przy odpalaniu z pliku .exe nie ma go nawet w pasku zadań, co komplikuje sprawę na tyle, że uruchamiając grę nie mogę się na niego przełączyć (Alt + Tab), żeby go zwyczajnie użyć...
jedyna sytuacja w jakiej pojawia się w pasku to jeśli robię plik .exe nie ukrywając consoli - wtedy tak konsola jest w pasku, ale nie sam program

W czym tkwi problem? Jakieś sugestie?
Czy mam wkleić tutaj cały kod?

Konrado777
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 75
1

A skąd wiesz, że masz skompilowany program jeśli testujesz go w IDE przez F5 ?

Prawdopodobnie masz zapisany w formacie .py i aby korzystać z niego bez interpretatora to musisz go skompilować np poprzez py installer.

M.
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 9
0
Konrado777 napisał(a):

A skąd wiesz, że masz skompilowany program jeśli testujesz go w IDE przez F5 ?

Prawdopodobnie masz zapisany w formacie .py i aby korzystać z niego bez interpretatora to musisz go skompilować np poprzez py installer.

no właśnie robiłem przez py installer
dlatego napisałem, że jedyna sytuacja w jakiej pojawia się w pasku to jeśli robię plik .exe nie ukrywając consoli - wtedy tak konsola jest w pasku, ale nie sam program

po zrobieniu pliku .exe czy komenda onefile czy bez niej i tak nigdy nie pojawia sie w pasku, po uzyciu instalatora Inno Setup również bez zmian

Konrado777
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 75
0

Ale przecież jak go kompilujesz to masz jakieś źródło do niego fizyczne na dysku.

M.
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 9
0
Konrado777 napisał(a):

Ale przecież jak go kompilujesz to masz jakieś źródło do niego fizyczne na dysku.

no tak
tak wyglada komenda w celu stworzenia pliku .exe.
w roznych konfiguracjac probowałem, z 'windowed' i bez, z 'noconsole' i bez, z 'onefile' i bez...

pyinstaller --onefile --windowed --add-data "onoff.png;." --add-data "plus.png;." --add-data "minus.png;." --add-data "start.png;." --add-data "break.png;." --add-data "pause.png;." --add-data "eleven.png;." --add-data "fourfive.png;." --add-data "nie.png;." --add-data "tak.png;." --add-data "powrot.png;." time_counter.py

lion137
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5023
0

Pokaż kod, bo, jesteś pewien, że Twoja aplikacja tworzy okno, albo go nie ukrywa?

M.
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 9
0
lion137 napisał(a):

Pokaż kod, bo, jesteś pewien, że Twoja aplikacja tworzy okno, albo go nie ukrywa?

import os
import sys
import tkinter as tk
from tkinter import messagebox
from tkinter import ttk
from PIL import Image, ImageTk
import time
from threading import Thread
import winsound
import threading

def resource_path(relative_path):
""" Znajdź plik w tymczasowym folderze (jeśli aplikacja jest uruchomiona z .exe) """
try:
# Sprawdź, czy aplikacja jest uruchomiona z pliku .exe
base_path = sys._MEIPASS
except Exception:
# Jeśli aplikacja jest uruchomiona w trybie deweloperskim, użyj ścieżki roboczej
base_path = os.path.abspath(".")

return os.path.join(base_path, relative_path)

class TachographApp:

def __init__(self, root, background_image_path):
    self.root = root
    self.root.title("Tachograph")
    # Wczytanie obrazu tła przy użyciu resource_path
    self.original_bg_image = Image.open(resource_path("tacho.jpg"))
    self.original_onoff_image = Image.open(resource_path("onoff.png"))
    self.original_plus_image = Image.open(resource_path("plus.png"))
    self.original_minus_image = Image.open(resource_path("minus.png"))
    self.original_button_image = Image.open(resource_path("start.png"))
    self.original_break_image = Image.open(resource_path("break.png"))
    self.original_pause_image = Image.open(resource_path("pause.png"))
    self.original_eleven_image = Image.open(resource_path("eleven.png"))
    self.original_fourfive_image = Image.open(resource_path("fourfive.png"))
    self.original_nie_image = Image.open(resource_path("nie.png"))
    self.original_tak_image = Image.open(resource_path("tak.png"))
    self.original_powrot_image = Image.open(resource_path("powrot.png"))
    
    self.scale_factor = 1.0
    self.min_scale_factor = 0.5  # Minimalny współczynnik skali
    self.max_scale_factor = 2.0  # Maksymalny współczynnik skali
    
    self.image = Image.open(background_image_path)
    self.image = self.image.resize((int(self.image.width * 0.7), int(self.image.height * 0.7)))  # Zmniejszenie obrazu o 30%
    self.bg_image = ImageTk.PhotoImage(self.image.resize(
        (int(self.image.width * self.scale_factor), int(self.image.height * self.scale_factor)), 
        Image.LANCZOS))

    
    # Ustawienie okna na wierzchu
    self.root.attributes("-topmost", 1)

    # Ukrycie ramki okna
    self.root.overrideredirect(True)

    # Obsługa przeciągania okna
    self.root.bind("<ButtonPress-3>", self.start_move)
    self.root.bind("<B3-Motion>", self.on_move)


    self.canvas = tk.Canvas(root, width=self.bg_image.width(), height=self.bg_image.height(), highlightthickness=0)
    self.canvas.pack(fill="both", expand=True)
lion137
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5023
0

A co to jest to:

Kopiuj
    # Ukrycie ramki okna
    self.root.overrideredirect(True)

?

Konrado777
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 75
0
lion137 napisał(a):

A co to jest to:

Kopiuj
    # Ukrycie ramki okna
    self.root.overrideredirect(True)

?

Chyba usuwa dekorację okna root.

M.
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 9
0
lion137 napisał(a):

A co to jest to:

Kopiuj
    # Ukrycie ramki okna
    self.root.overrideredirect(True)

?

myslalem, ze Ukrycie ramki okna - zeby nie bylo widać "minimalizuj" "przywroc/maksymalizuj" i "zamknij"

no i fakt - wlasnie przetestowalem
jeśli to usune: self.root.overrideredirect(True)
albo zrobie False

to fakt, znajduje sie w pasku, ale ma ramke, a wlasnie nie chce zeby ta ramka była
tak wiec self.root.overrideredirect(True) powoduje, ze ramka okna znika i znika automatycznie z paska zadan

DR
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1135
0

Spróbuj self.root.wm_attributes('-fullscreen', 'True')

M.
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 9
0
Dregorio napisał(a):

Spróbuj self.root.wm_attributes('-fullscreen', 'True')

dziala, ale jak wskazuje sama funkcja - tylko w full screen :)
da się to jakoś zmniejszyc do rozmiarow mojego okna?

M.
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 9
0

znalazlem rozwiazanie
musi byc:
self.root.overrideredirect(True)
self.root.wm_attributes('-transparentcolor', 'grey')
dzieki temu, jest okno o wymiarach jakie chce, bez ramki, a mimo to pojawia sie w pasku zadan

DR
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1135
0

@M.: Wydaje mi się, że jak np. ustaisz self.root.geometry("800x600") to też nie powinno być fullscreen.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.