У меня возникли проблемы с импортом и использованием модуля, который я создал. У меня есть patcher.py, и я хотел бы импортировать модули из patches.py, но я получаю сообщение об ошибке при попытке импортировать и использовать disable_removecd. Теперь я немного запутался в том, как правильно настроить его и как правильно импортировать и использовать.Python3 - импортирующий и использующий модуль tkinter
patcher.py
#import the tkinter module
from tkinter import *
from tkinter.filedialog import askopenfilename
import bsdiff4
from patches import *
#bsdiff4.file_patch(dst, dst, patch)
#create a new class
class Application(Frame):
def __init__(self, master):
super(Application, self).__init__(master)
self.grid(row = 2, sticky = W+E+N+S)
#,padx=300
cmexecutable = askopenfilename()
print(cmexecutable)
self.mainmenu()
def mainmenu(self):
self.logo = PhotoImage(file='logo.gif')
self.image = Label(self, image=self.logo)
self.image.grid(columnspan = 2)
self.image.configure(background='black')
#self.bttn1 = Button(self, text = 'Country Specific')
self.bttn1 = Button(self, text = 'Disable Remove CD Message')
self.bttn1['command'] = disable_removecd(self)
self.bttn1.grid(columnspan = 2 ,sticky = W+E+N+S)
patches.py
from patcher import *
def disable_removecd():
offset1 = 0x42a98b
offset2 = 0x42a98c
offset3 = 0x42a98d
offset4 = 0x42a98e
offset5 = 0x42a98f
offset6 = 0x42e400
offset7 = 0x42e401
offset8 = 0x42e402
offset9 = 0x42e403
offset10 = 0x42e404
newvalue1 = b'\x90'
newvalue2 = b'\x90'
newvalue3 = b'\x90'
newvalue4 = b'\x90'
newvalue5 = b'\x90'
newvalue6 = b'\x90'
newvalue7 = b'\x90'
newvalue8 = b'\x90'
newvalue9 = b'\x90'
newvalue10 = b'\x90'
with open(cmexecutable, 'r+b') as victim:
victim.seek(offset1)
victim.write(newvalue1)
victim.seek(offset2)
victim.write(newvalue2)
victim.seek(offset3)
victim.write(newvalue3)
victim.seek(offset4)
victim.write(newvalue4)
victim.seek(offset5)
victim.write(newvalue5)
victim.seek(offset6)
victim.write(newvalue6)
victim.seek(offset7)
victim.write(newvalue7)
victim.seek(offset8)
victim.write(newvalue8)
victim.seek(offset9)
victim.write(newvalue9)
victim.seek(offset10)
victim.write(newvalue10)
Когда я бегу patcher.py я получаю эту ошибку:
self.bttn1['command'] = disable_removecd(self)
NameError: name 'disable_removecd' is not defined
Что я делаю неправильно?
я сделать эти изменения, но когда я нажимаю на bttn1 Я получаю: 'Файл" cmpatcherv002.py ", строка 37, в self.bttn1 ['c ommand '] = lambda: disable_removecd (cmexecutable) ТипError: disable_removecd() принимает 0 позиционных аргументов, но 1 дано ' –
@ Хосе, я забыл упомянуть, что' disable_removecd' также должен быть изменен. Я обновил ответ, чтобы включить его. – falsetru
Кажется теперь работать. Я изменил 'def disable_removecd (self):' и с 'open (self, 'r + b') в качестве жертвы:' Это правильно? Также должен ли я использовать 'self.offset1'? –