Python shortcut uygulamam hata veriyor

Python:
    subprocess.run(["shortcut", "-c", shortcut])

Sorunun kaynağı bu hocam. Shortcut kullanımını bilmediğim için bir şey diyemeyeceğim.

Python:
import tkinter as tk
from tkinter import messagebox
import subprocess

def create_shortcut():
    first_key = first_key_entry.get()
    second_key = second_key_entry.get()
    app = app_entry.get()
    shortcut = f"{first_key}+{second_key}:{app}"
    print("shortcut", "-c", shortcut)
    messagebox.showinfo("Success", "Shortcut created successfully!")

root = tk.Tk()
root.title("Shortcut Creator")

first_key_label = tk.Label(root, text="First key:")
first_key_label.grid(row=0, column=0)
first_key_entry = tk.Entry(root)
first_key_entry.grid(row=0, column=1)

second_key_label = tk.Label(root, text="Second key:")
second_key_label.grid(row=1, column=0)
second_key_entry = tk.Entry(root)
second_key_entry.grid(row=1, column=1)

app_label = tk.Label(root, text="Application:")
app_label.grid(row=2, column=0)
app_entry = tk.Entry(root)
app_entry.grid(row=2, column=1)

create_button = tk.Button(root, text="Create", command=create_shortcut)
create_button.grid(row=3, column=1)

root.mainloop()

Bu kodu çalıştırın ve çıktıyı gözden geçirin. Çünkü program bunu yürütüyor.
Yok hocam aynı sonuç. Kodu sıfırdan bi yazmak istiyorum mantık hatası var. Emeğin için çok teşekkür ederim
 
Yok hocam aynı sonuç. Kodu sıfırdan bi yazmak istiyorum mantık hatası var. Emeğin için çok teşekkür ederim
hocam çıkan çıktıyı inceleyeceksiniz ve olması gereken sonucu yazacaksınız. Belirttiğim gibi hatanın kaynağı 10.satır yani shortcut oluştururma işlemi hatalı çalışıyor.
 
hocam çıkan çıktıyı inceleyeceksiniz ve olması gereken sonucu yazacaksınız. Belirttiğim gibi hatanın kaynağı 10.satır yani shortcut oluştururma işlemi hatalı çalışıyor
Biraz araştırma yapmam lazım bu olay nasıl işliyor öğrenirsem daha net bi kod yazmaya çalışabilirim. Anlık aklıma gelen bi fikirle haldır huldur giriştim koda asdafsdaf

hocam çıkan çıktıyı inceleyeceksiniz ve olması gereken sonucu yazacaksınız. Belirttiğim gibi hatanın kaynağı 10.satır yani shortcut oluştururma işlemi hatalı çalışıyor.
Buyurun hocam taş gibi çalışan bir kod yazdım. Şimdi sadece kullanıcıdan bu verileri isteticeğim.
Dener misin?

Python:
import keyboard
import subprocess

def run_program():
    subprocess.Popen("calc.exe")

keyboard.add_hotkey('win+f1', run_program)
keyboard.wait()
 
Son düzenleme:
Kodu denedim sonuç değişti. Öncelikle success mesajı geldi ilk kodda gelmiyordu. Terminal ise şunu söyledi:

'shortcut' is not recognized as an internal or external command,
operable program or batch file.

Shortcut u tanımıyom diyor beyefendi. Shortcut'u nasıl tanımlayabilirim ki bildiğim 2 kütüphane var zaten asdafgasgagsa

Ben üst mevkilere danışacağım böyle olmayacak.. chat gpt çökmemiştir inşallah yine

büyük ihtimalle ben yanlışım hocam acemiliğimiz çıkıyor :)
CMD üzerinde shortcut diye bir komut yok kodunuz ondan hata veriyor.
 
Biraz araştırma yapmam lazım bu olay nasıl işliyor öğrenirsem daha net bi kod yazmaya çalışabilirim. Anlık aklıma gelen bi fikirle haldır huldur giriştim koda asdafsdaf


Buyurun hocam taş gibi çalışan bir kod yazdım. Şimdi sadece kullanıcıdan bu verileri isteticeğim.
Dener misin?

Python:
import keyboard
import subprocess

def run_program():
    subprocess.Popen("calc.exe")

keyboard.add_hotkey('win+f1', run_program)
keyboard.wait()
Mis gibi çalışıyor. Bu fonksiyonu programdakiyle değiştirin.

Hocam yeni olduğunuz için büyük ihtimalle fonksiyonu ekledikten sonra program yanıt vermeyecektir. Sebebi ise tkinteri beklemeye sokmamız.

Python:
import tkinter as tk
from tkinter import messagebox
import subprocess
import keyboard
import threading

def run_program():
    subprocess.Popen(app_entry.get())

def create_shortcutter():
    first_key = first_key_entry.get()
    second_key = second_key_entry.get()
    app = app_entry.get()
    
    keyboard.add_hotkey(f'{first_key}+{second_key}', run_program)
    messagebox.showinfo("Success", "Shortcut created successfully!")
    keyboard.wait()

def create_shortcut():
    threading.Thread(target=create_shortcutter, daemon=True).start()

    
    
    

root = tk.Tk()
root.title("Shortcut Creator")

first_key_label = tk.Label(root, text="First key:")
first_key_label.grid(row=0, column=0)
first_key_entry = tk.Entry(root)
first_key_entry.grid(row=0, column=1)

second_key_label = tk.Label(root, text="Second key:")
second_key_label.grid(row=1, column=0)
second_key_entry = tk.Entry(root)
second_key_entry.grid(row=1, column=1)

app_label = tk.Label(root, text="Application:")
app_label.grid(row=2, column=0)
app_entry = tk.Entry(root)
app_entry.grid(row=2, column=1)

create_button = tk.Button(root, text="Create", command=create_shortcut)
create_button.grid(row=3, column=1)

root.mainloop()

Thread kullanarak çoklu görev oluşturuyoruz bu şekilde pythonun gidişatına engel olmadan başka bir iş yapabiliyoruz. Kodu inceleyince anlayacaksınız.
 
Son düzenleme:
Mis gibi çalışıyor. Bu fonksiyonu programdakiyle değiştirin.

Hocam yeni olduğunuz için büyük ihtimalle fonksiyonu ekledikten sonra program yanıt vermeyecektir. Sebebi ise tkinteri beklemeye sokmamız.

Python:
import tkinter as tk
from tkinter import messagebox
import subprocess
import keyboard
import threading

def run_program():
    subprocess.Popen(app_entry.get())

def create_shortcutter():
    first_key = first_key_entry.get()
    second_key = second_key_entry.get()
    app = app_entry.get()
   
    keyboard.add_hotkey(f'{first_key}+{second_key}', run_program)
    messagebox.showinfo("Success", "Shortcut created successfully!")
    keyboard.wait()

def create_shortcut():
    threading.Thread(target=create_shortcutter, daemon=True).start()

   
   
   

root = tk.Tk()
root.title("Shortcut Creator")

first_key_label = tk.Label(root, text="First key:")
first_key_label.grid(row=0, column=0)
first_key_entry = tk.Entry(root)
first_key_entry.grid(row=0, column=1)

second_key_label = tk.Label(root, text="Second key:")
second_key_label.grid(row=1, column=0)
second_key_entry = tk.Entry(root)
second_key_entry.grid(row=1, column=1)

app_label = tk.Label(root, text="Application:")
app_label.grid(row=2, column=0)
app_entry = tk.Entry(root)
app_entry.grid(row=2, column=1)

create_button = tk.Button(root, text="Create", command=create_shortcut)
create_button.grid(row=3, column=1)

root.mainloop()

Thread kullanarak çoklu görev oluşturuyoruz bu şekilde pythonun gidişatına engel olmadan başka bir iş yapabiliyoruz. Kodu inceleyince anlayacaksınız.
Hocam uygulamaya direkt aktarmadım baştan bi elden geçirdim kodun hepsini o yüzden hata almadım. Bitmiş halini buraya atmayı sabırsızlıkla bekliyorum fakat şu hotkeyleri pc nasıl kafada tutacak bilmiyorum. Sizin bir fikriniz var mı?
 
Hocam uygulamaya direkt aktarmadım baştan bi elden geçirdim kodun hepsini o yüzden hata almadım. Bitmiş halini buraya atmayı sabırsızlıkla bekliyorum fakat şu hotkeyleri pc nasıl kafada tutacak bilmiyorum. Sizin bir fikriniz var mı?
Var tabi hocam. 3 seçenek sunacam.

1- Sqlite3 kullanmak.
Sqlite3 bir veritabanı kütüphanesidir. Bu şekil .db dosyaların içinden veri kaydedebilir ve çekebilirsiniz.

2-JSON kullanmak.
JSON'u bilirsiniz diye tahmin ediyorum. config dosya türüdür. bu json kütüphanesi pythonda mevcut bu şekil json dosyasına veri kaydedebilir veya veri çekebilirsiniz.

3-config kullanmak.

.cfg yani config dosyaları ile aynı şekil veri alabilir veya çekebilirsiniz.

Programınızı kullanmak için tavsiye:

-Programı arkaplanda çalıştırma yapmak.
Bu şekil program görev çubuğunda gözükmese bile arkaplanda çalışacaktır
-Programı windows ile başlatma yapmak.
Programı windows ile beraber otomatik başlata koyarsanız program bilgisayar ile beraber çalışmaya başlayacaktır.

Creator yapmanın yanı sıra kayıtlı hotkeyleri yönetmek için (Silmek, işlevlerini değiştirmek, tuşları değiştirmek) bir database programı yapabilirsiniz. (Bunun için sqlite3 yani veri tabanı kullanmanız tavsiye edilir)
 
Var tabi hocam. 3 seçenek sunacam.

1- Sqlite3 kullanmak.
Sqlite3 bir veritabanı kütüphanesidir. Bu şekil .db dosyaların içinden veri kaydedebilir ve çekebilirsiniz.

2-JSON kullanmak.
JSON'u bilirsiniz diye tahmin ediyorum. config dosya türüdür. bu json kütüphanesi pythonda mevcut bu şekil json dosyasına veri kaydedebilir veya veri çekebilirsiniz.

3-config kullanmak.

.cfg yani config dosyaları ile aynı şekil veri alabilir veya çekebilirsiniz.

Programınızı kullanmak için tavsiye:

-Programı arkaplanda çalıştırma yapmak.
Bu şekil program görev çubuğunda gözükmese bile arkaplanda çalışacaktır
-Programı windows ile başlatma yapmak.
Programı windows ile beraber otomatik başlata koyarsanız program bilgisayar ile beraber çalışmaya başlayacaktır.

Creator yapmanın yanı sıra kayıtlı hotkeyleri yönetmek için (Silmek, işlevlerini değiştirmek, tuşları değiştirmek) bir database programı yapabilirsiniz. (Bunun için sqlite3 yani veri tabanı kullanmanız tavsiye edilir)
Tavsiyelerin için teşekkür ederim hocam windows ile başlatmayı ben de düşünmüştüm ama arkaplanda çalıştırmak aklıma gelmedi. Onu bilmiyorum ama öğreniriz. Ayrıca dünden beri sql bakıyorum zor bir şey değil gibi gözüküyor. Onu kullanabilirim. Teşekkürler tekrar.
 
Tavsiyelerin için teşekkür ederim hocam windows ile başlatmayı ben de düşünmüştüm ama arkaplanda çalıştırmak aklıma gelmedi. Onu bilmiyorum ama öğreniriz. Ayrıca dünden beri sql bakıyorum zor bir şey değil gibi gözüküyor. Onu kullanabilirim. Teşekkürler tekrar.
Kesinlikle sqlite seçmenizi öneririm. Böylece bir çok veri kaydedebilirsiniz. Ama dilerseniz yazı dosyaları şeklinde de kullanabilirsiniz ama veri çekmek için en basiti SQLite3.
 
Uygulama bitti sayılır. Mükemmel çalışıyor. Fakat bunu sizle nasıl paylaşabilirim? veri tabanım online değil sql3 ile uygulamanın yanına kurdurttum db'yi. Şuan küçük 1-2 tane bugu var çözemediğim ve programı arka planda çalıştırtma sonra windows ile başlatma gibi önerdiğiniz şeyleri de ekleyeceğim. Uygulama bittiğinde alt+s ye bastıktan sonra spotify açıldığı zaman her şey bunun için miydi diyeceğim ama olsun asfavabaeefaffv.
Kesinlikle sqlite seçmenizi öneririm. Böylece bir çok veri kaydedebilirsiniz. Ama dilerseniz yazı dosyaları şeklinde de kullanabilirsiniz ama veri çekmek için en basiti SQLite3.
 

Technopat Haberler

Yeni konular

Geri
Yukarı