Python projem baska bilgisayarda çalışmıyor

lise 1ögrencisiyim. Tkinterda bi oyun yaptım tıklama tarzı.Oyun bittiğinde konsolda hatalar çıkıyor 1400lü satırlarda (proje 130satır) ama çalışmasına herhangi bi etkisi yok benim asıl sorunum su: pyinstaller ile exe çevirdiğim pc’de açılıyor başka pc’de açılmıyor (15saniye hiçbişey olmayıp çalışmayı durdurdu hatası veriyor) py dosyasınï deniyorum başka pc’de açılıyor.açılan bilgisayarda 10saniye sonra açılıyor sağ click attığımda 10saniye bekletiyor özelliklere basıyorum 15-20sn bekletiyor.Tamam bilgisayarım eski (ddr2 2gbram onboard )ama altı üstü python ağır bişey degilki görev yöneticisinden bakımca ağırdada çalışmıyor. çözemedim kodların bir kısmınï paylaşïyorum ana mantık için.

ilk konum hatam varsa affola
edit:bilgisayar nete baglı degildi mecbur foto çektim

Dürüst olmak gerekirse ne fotoğraftan ne de dediklerinizden bir şey anlamadım. Ancak gene de çıkarım yapmaya çalışacağım.

Haya? Haya ne?

Bunun birçok sebebi olabilir, koddaki bir algoritma hatası da olabilir, kullanılan kütüphanelerden dolayı oluşan bir hata da olabilir. Ancak gene de büyük ihtimal tkinter arayüzü yanıt vermiyor işaretlendiğinden kodda bir hata olduğunu sanıyorum. Eğer kodu fotoğraf çekmeden buraya atarsanız kodu inceleme şansımız olur.

Böyle bir şeyi nereden çıkardınız? Sizin dediğiniz şeyin olması için çok çok antika bir sistemde bunu denemeniz lazım, tabi program çalışamayacaktır büyük ihtimalle, o ayrı.

Eğer kodu atarsanız daha ayrıntılı inceleme şansımız olabilir. Tabi bir de kodunuzu fotoğraf olarak değil de buraya yazarak atmanız daha iyi olur.

1 Beğeni

pyinstaller --onefile --windowed dosya.py

olarak çalıştırın…

Bunu da deneyebilirsiniz:

müsait zamanımda deneyecegim sagolun
kodun detayınıda yarın atacagım

kodun tamamı aşağıdaki şekilde:

import os,tkinter,tkinter as tk,random,time,threading

sayfa=tkinter.Tk()

sayfa.geometry('600x600+250+70')
sayfa.title('tıklama oyunu v0.21')
sayfa.resizable('false','false')
bs=0
z=0
puan=0
konumx=0
konumy=0

def harekety():
 global konumy,z
 while z==0:
  if konumy>0.4:
   while konumy>0.2:
    time.sleep(0.01)
    konumy-=0.003
    if z==0:
     buton.place(rely=konumy)
  else:
   while konumy<0.55:
    time.sleep(0.01)
    konumy+=0.003
    if z==0:
     buton.place(rely=konumy)
 
def hareketx():
 global konumx,z
 while z==0:
  if konumx>0.4:
   while konumx>0.2:
    time.sleep(0.01)
    konumx-=0.003
    buton.place(relx=konumx)
  else:
   while konumx<0.55:
    time.sleep(0.01)
    konumx+=0.003
    buton.place(relx=konumx)
    
def obitti():
 global puan,z
 z=1
 spuan=tk.Label(sayfa,text='PUANINIZ=',fg='darkblue',font='a 40')
 spuan.pack()
 spuan.place(relx=0.06,rely=0.5)
 puan=str(puan)
 spuan['text']+=puan

def sürela():
 harby=threading.Thread(target=harekety)
 harby.start()
 harb=threading.Thread(target=hareketx)
 harb.start()
 butong.destroy()
 üsttabela.destroy()
 buton['text']='Tıkla'
 global süre
 while süre>0:
  time.sleep(1)
  süre-=1
  if süre>50:
   kalans['fg']='light green'
  elif süre>40:
   kalans['fg']='green'
  elif süre>30:
   kalans['fg']='blue'
  elif süre>20:
   kalans['fg']='yellow'
  elif süre>10:
   kalans['fg']='red'
  else:
   kalans['fg']='black'
  kalans['text']=süre
 buton.destroy()
 obitti()

def tıkladı(): 
 global konumx,konumy
 konumx=random.randint(10,60)
 konumx/=100
 konumy=random.randint(10,90)
 konumy/=100
 buton.place(relx=konumx,rely=konumy)
 global puan
 puan+=1
 puany['text']=puan

def tıkladı60():
 global bs,süre
 tıkladı()
 if bs==0:
  süre=60
  bs=1
  süreb=threading.Thread(target=sürela)
  süreb.start()
  
def tıkladı30():
 global bs,süre
 tıkladı()
 if bs==0:
  süre=30
  bs=1
  süreb=threading.Thread(target=sürela)
  süreb.start()

buton=tk.Button(sayfa,text='60saniye',bg='blue',command=tıkladı60)
buton.pack()
buton.place(relx=0.5,rely=0.7,width=150,height=63)

butong=tk.Button(sayfa,text='30saniye',bg='blue',command=tıkladı30)
butong.pack()
butong.place(relx=0.2,rely=0.7,width=150,height=63)

kalans=tk.Label(sayfa,text='Kalan Süre=',fg='green',font='a 16')
kalans.pack()
kalans.place(relx=0.72,rely=0.014)

puany=tk.Label(sayfa,text='Puan=',fg='blue',font='a 16')
puany.pack()
puany.place(relx=0.2,rely=0.014)

isimim=tk.Label(sayfa,text='By Cem Çördük',fg='green',font='a 20')
isimim.pack()
isimim.place(relx=0.66,rely=0.93)

üsttabela= tk.Label(sayfa,text='     TIKLAMA OYUNU V0.21\n\n\n\n\n\n\n  Oyun süresini seçiniz:',fg='blue',font='a 24')
üsttabela.pack()
üsttabela.place(relx=0.1,rely=0.2)


sayfa.mainloop()

edit:oyunun amacı bi buton var sürekli yer değiştirip hareket ediyor tıkladıkça puan kazanılıyor

Esksik bir şeyler var kodunuzda…

Kodunuzu 1 gündür anlamaya çalışıyorum. Yazdığınız kodun neresini düzeltsem bilemedim açıkçası. Yolun başınızda olduğunuzu varsayarak güzel kod yazmaya özen göstermenizi rica ediyorum. Kodunuzu denediğimde birden fazla thread olduğu ve tek bir değişkeni aynı anda değiştirmeye çalıştırdığından dolayı race condition durumu oluşuyor ve bunun sonucunda destroy edilen bir buttonun place edilemeyeceğine dair bir hata oluşuyor. Class yapısını bilmediğinizi göze alarak bir kod hazırladım. Kodu aşağıya bırakıyorum:

import tkinter as tk
import tkinter.ttk
import tkinter.messagebox
import threading
import time
import random


WINDOW_HEIGHT = 400
WINDOW_WIDTH = 550
AT_GAME = False

def window_on_close():
    global AT_GAME

    if not AT_GAME:
        exit(0)

    sure_for_quit = tkinter.messagebox.askokcancel("Oyun", "Çıkmak istediğinize emin misiniz?")

    if sure_for_quit:
        AT_GAME = False

        exit(0)

def start_game():
    global AT_GAME

    IS_BUTTON_CLICKED = False

    main_frame.pack_forget() # Forget menu frame.

    game_frame = tk.Frame(bg="white")
    game_frame.pack(side="top", fill="both", expand=True, padx=25, pady=25)

    def button_is_clicked():
        nonlocal IS_BUTTON_CLICKED

        IS_BUTTON_CLICKED = True

    def back_to_menu():
        game_frame.destroy()
        
        main_frame.pack(side="top", fill="both")

    def locate_button():
        global AT_GAME
        nonlocal IS_BUTTON_CLICKED

        click_button = tk.Button(game_frame, text="Bana tıkla!", borderwidth=0, fg="white", disabledforeground="white", bg="purple", command=button_is_clicked)

        x = random.randint(1, 100)
        y = random.randint(1, 100)
        x_t = 1
        y_t = 1

        while True:
            if IS_BUTTON_CLICKED:
                click_button.config(text="Tıklamayı başardın!", bg="lime")
                time.sleep(5)
                click_button.destroy()

                AT_GAME = False
                back_to_menu()
                
                break
            
            if x >= 100:
                x_t = -random.randint(1,3)
            
            elif x <= 0:
                x_t = random.randint(1,3)

            if y >= 100:
                y_t = -random.randint(1,3)

            elif y <= 0:
                y_t = random.randint(1,3)

            click_button.place(relx=x/100, rely=y/100, anchor="center")

            x += x_t         
            y += y_t

            time.sleep(random.randint(10,20)/1000)


    AT_GAME = True

    threading.Thread(target=locate_button, daemon=True).start()

if __name__ == "__main__":
    main_window = tk.Tk() # Initialize the main window.
    main_window.resizable(False, False)
    main_window.protocol("WM_DELETE_WINDOW", window_on_close)
    main_window.geometry(f"{WINDOW_WIDTH}x{WINDOW_HEIGHT}+{int((main_window.winfo_screenwidth()-WINDOW_WIDTH)/2)}+{int((main_window.winfo_screenheight()-WINDOW_HEIGHT)/2)}")

    main_frame = tk.Frame()
    main_frame.pack(side="top", fill="both")

    start_game_label = tk.Label(main_frame, text="Oyuna başlamak için aşağıdaki tuşa tıklayın:")
    start_game_label.grid(row=0, column=0, padx=20, pady=(20, 0), sticky="w")

    start_game_button = tkinter.ttk.Button(main_frame, text="Oyuna başla", command=start_game)
    start_game_button.grid(row=1, column=0, padx=20, pady=(10, 20), sticky="w")

    main_window.mainloop()

pyinstaller İle Paketlediğin Bilgisayarda Kullandığın Python 64 Bit İse exe ’ yi Çalıştırdığın Bilgisayar 32 Bit İse Çalışmaz Projeyi 32 Bit Python İle Paketlersen 64-32 Bit Bilgisayarlarda Çalışır.
Ayrı Olarak Ek Dosyalar Kullanıyor İsen --onefile Kullanmadıysan Dönüştürdüğün Python Dosyasını(.exe yi) Kaynak Klasöründe Dönüştürdüğün Python Dosyası İle Aynı Konuma Kopyalayıp exe yi O Dizinde Çalıştır.

daha yeniyim illaki hatalarım olacaktır kafamda birkaç soru birikti yazıyorum.
1-destroy edilen düğme sorununu şöyle çözegim sanırsam

#x y konumunu degiştiren kodların oraya
if oyunbittimi=='evet':
 break

2-sorunun pc’den kaynaklı oldugunu düsünmeye başladım işyerimdeki bilgisayarda gayet güzel çalıştı oyun

3-tkinter,tkinter as tk yeterli olmuyor mu bazı kisiler .ttk .messageboz yapıyor bunlar ne işe yarıyor

4-siz height width kullanmıssınız sayfada ben geometry kullanmışım bunların zararı varmï aynı komutu görüyor galiba

5-threading sanırsam commandï direkt defe bağlarsam aynı anda iki işi yapamıyor bu threadingin amacı tam olarak bumu ben böyle kullandım ama

6-evet kodları gereksiz karmaşık yapmışım saolun düzelteceğim

saolasınız bilgilendirişiniz için

1 Beğeni

Ana programı kontrol etmeli ve threadin içindeki döngüyü ona göre kırmalısınız. Nasıl yapacağınız size kalmış.

Hata mesajı olmadan hatayı nereden bileceğiz? Hata mesajını paylaşmanız daha iyi olacaktır.

Sadece değişkenler isimleri farklı. Yoksa apayrı bir şey yaptığım yok.

Ne demek istediğinizi anlamadım açıkçası. Ne demek istediğinizi açıklarsanız daha iyi olur.

Başka bilgisayar açılmamasının nedeni diğer bilgisayarda indirmediğin kütüphane olabiliyor çok fazla neden olabilir ama büyük ihtimalle pip olabilir kullandıysan diğer bilgisayar indirmen lazım.

Şuanda kodunu çalıştırıp inceleyebiliceğim bir cihaza sahip değilim sadece 130 satırlık kodunda neden 1400. Satırda hata aldığına dair birşeyler söylemek istedim bu durumun sebebi çoğu zaman senin kodunun çalıştırdığı bir kütüphane yada dahili bir fonksiyonun bilgisayarın başka bir yerindeki bir kodda hata oluşturmasıyla ilgili birşey hata metnini tamamen okursan muhtemelen sende farkedersin bir zincir şeklinde gider o hatalar ve espirisi senin kodundaki 72. Satır xxx.py daki 1432. Satırdaki bir kodda hata olmasına sebep olmuştur gibidir belki şuanki kodun da durum daha farklıdır ama eğer bu işte yeniysen hata metinlerine doğru gözle bakabilmek oldukça önemli birşey o yüzden bunu söylemek istedim bunu bilirsen senin kodundaki hatalı satırı bulman oldukça kolaylaşıcaktır

1 Beğeni