Как включить / выключить функцию в программе на Python?

#python #python-3.x #tkinter

#питон #python-3.x #ткинтеръ #python #tkinter

Вопрос:

Итак, у меня есть эта программа на python для взломов CSGO, в которой есть esp, aimbot, wallhacks и многое другое! Давайте возьмем, к примеру, код triggerbot…

 #imports
import pymem
from pymem import process
import os
import sys
import time
import win32
from win32 import win32api
import win32process
import keyboard
import threading
from threading import Thread
import offsets
from offsets import *

def trigger():
    while True:
        localplayer = pm.read_int(client   dwLocalPlayer)
        crosshairid = pm.read_int(localplayer   m_iCrosshairId)
        getteam = pm.read_int(client   dwEntityList   (crosshairid - 1)*0x10)
        localteam = pm.read_int(localplayer   m_iTeamNum)
        crosshairteam = pm.read_int(getteam   m_iTeamNum)

        if crosshairid>0 and crosshairid<32 and localteam != crosshairteam:
            pm.write_int(client   dwForceAttack, 6)
  

Теперь я хочу иметь возможность предоставить пользователю возможность включать и выключать его с помощью переключателя tkinter, но я не могу понять, как заставить его полностью отключиться после его включения.

Я пробовал то, чего не хочу, потому что это было глупо, а также я искал в Google, но не смог найти многого.

Пожалуйста, помогите!

Комментарии:

1. Пожалуйста, поделитесь тем, что вы пробовали до сих пор.

2. @Jean-MarcVolle Честно говоря, не так много, но я приложил максимум усилий и обдумал идеи, но я ничего не могу придумать! Я даже спрашивал на сервере python в discord, но никто не смог помочь

3. Не будет ли этот while цикл замораживать графический интерфейс? Вы можете использовать root.after() и root.after_cancel() для полной остановки функции. Вы хотите получить демонстрационный ответ с ним?

4. @CoolCloud Я такой тупой, что уже давно пытаюсь заставить ее работать с while, а она продолжает зависать! Вы даже не представляете, насколько я был бы признателен, если бы вы могли привести мне пример с root.after() и root.after_cancel()

Ответ №1:

Взгляните на этот пример:

 from tkinter import *

root = Tk()

def run():
    global rep
    if var.get() == 1:
        print('Hey')
        rep = root.after(1000,run) #run the function every 2 second, if checked.
    else:
        root.after_cancel(rep) #cancel if the checkbutton is unchecked.

def step():
    print('This is being printed in between the other loop')

var = IntVar()
b1 = Checkbutton(root,text='Loop',command=run,variable=var)
b1.pack()

b2 = Button(root,text='Seperate function',command=step)
b2.pack()

root.mainloop()
  

after() метод принимает в основном два аргумента:

  • ms — время для запуска функции
  • func — функция для запуска после завершения заданного ms.
  • after_cancel() метод принимает только имя переменной after().

Возможно, также имейте в виду, что вы можете использовать циклы root.update() и root.update_idletasks() с while , но это тоже неэффективно.

Надеюсь, это помогло вам лучше понять, дайте мне знать, если возникнут какие-либо сомнения или ошибки.

Приветствия

Комментарии:

1. Черт возьми, спасибо за быстрый ответ, однако я использую флажки, в которых, когда он установлен, функция запускается, а когда нет, функция не выполняется… Есть какая-нибудь идея для этого?

2. @SDG8 хммм, дай мне посмотреть, пожалуйста, подожди.

3. Я действительно очень ценю, что вы помогаете мне для начала, поэтому, пожалуйста, уделите время, которое вам нужно 😀

4. Может быть одна небольшая проблема, код, который вы мне дали, работает только для 1 функции, но в моем случае у меня есть пара функций, поэтому, например, когда я включаю esp, когда я включаю другие вещи, другие вещи не работают

5. Пример @SDG8? Возможно, вам нужно обновить свой Q. Я рекомендую задать новый вопрос