Implementing the MVC pattern properly in Tkinter












-1












$begingroup$


I have written a very simple Tkinter program to convert km to miles: it consists of a text entry box, a button, and a text box to print the output to.



Model:
The model just does the multiplication:



def km_to_miles(self, s):
if len(s) > 0:
return float(s)*


View:
The view is initialised with a button b1, an entry box e1, and a text output box t1:



self.b1 = Tk.Button(master, text = "Execute")
self.e1_value = Tk.StringVar()
self.e1 = Tk.Entry(master, textvariable = self.e1_value)
self.t1 = Tk.Text(master, height = 1, width = 20 )


The view also has this code to update the output text box:



def output(self, miles):
self.t1.delete(1.0, Tk.END)
self.t1.insert(Tk.END, miles)


Controller:
I'm worried about the following code in my Controller class (the method is bound to the button b1):



def execute(self, event):
km = self.view.e1_value.get()
miles = self.model.km_to_miles(km)
self.view.output(miles)


Question: Is this correctly following the MVC pattern, or am I mixing up GUI and "business" logic?



The repo is uploaded here: https://github.com/masumshaikh/UdemyPythonMegaCourse/tree/master/003%20Tkinter



instructor.py is the code that was presented in a lecture, which I have tried to translate to the MVC patter in km_to_miles.py.










share|improve this question









New contributor




butterflyknife is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.







$endgroup$








  • 2




    $begingroup$
    Welcome to Code Review! As per the rules in the help center, the code to be reviewed must be embedded in the question itself. You may include a GitHub link as supplementary material.
    $endgroup$
    – 200_success
    2 hours ago






  • 1




    $begingroup$
    Also, please retitle the question to state the task accomplished by the code, rather than your primary concern about the code. See How to Ask.
    $endgroup$
    – 200_success
    1 hour ago










  • $begingroup$
    @200_success: thank you for the guidance. I hope the edits I just made have improved the question.
    $endgroup$
    – butterflyknife
    1 hour ago










  • $begingroup$
    No. There must be enough code embedded directly in the question such that the question makes sense even without the GitHub link.
    $endgroup$
    – 200_success
    1 hour ago










  • $begingroup$
    @200_success. Thanks again. Hope it's OK now.
    $endgroup$
    – butterflyknife
    1 hour ago
















-1












$begingroup$


I have written a very simple Tkinter program to convert km to miles: it consists of a text entry box, a button, and a text box to print the output to.



Model:
The model just does the multiplication:



def km_to_miles(self, s):
if len(s) > 0:
return float(s)*


View:
The view is initialised with a button b1, an entry box e1, and a text output box t1:



self.b1 = Tk.Button(master, text = "Execute")
self.e1_value = Tk.StringVar()
self.e1 = Tk.Entry(master, textvariable = self.e1_value)
self.t1 = Tk.Text(master, height = 1, width = 20 )


The view also has this code to update the output text box:



def output(self, miles):
self.t1.delete(1.0, Tk.END)
self.t1.insert(Tk.END, miles)


Controller:
I'm worried about the following code in my Controller class (the method is bound to the button b1):



def execute(self, event):
km = self.view.e1_value.get()
miles = self.model.km_to_miles(km)
self.view.output(miles)


Question: Is this correctly following the MVC pattern, or am I mixing up GUI and "business" logic?



The repo is uploaded here: https://github.com/masumshaikh/UdemyPythonMegaCourse/tree/master/003%20Tkinter



instructor.py is the code that was presented in a lecture, which I have tried to translate to the MVC patter in km_to_miles.py.










share|improve this question









New contributor




butterflyknife is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.







$endgroup$








  • 2




    $begingroup$
    Welcome to Code Review! As per the rules in the help center, the code to be reviewed must be embedded in the question itself. You may include a GitHub link as supplementary material.
    $endgroup$
    – 200_success
    2 hours ago






  • 1




    $begingroup$
    Also, please retitle the question to state the task accomplished by the code, rather than your primary concern about the code. See How to Ask.
    $endgroup$
    – 200_success
    1 hour ago










  • $begingroup$
    @200_success: thank you for the guidance. I hope the edits I just made have improved the question.
    $endgroup$
    – butterflyknife
    1 hour ago










  • $begingroup$
    No. There must be enough code embedded directly in the question such that the question makes sense even without the GitHub link.
    $endgroup$
    – 200_success
    1 hour ago










  • $begingroup$
    @200_success. Thanks again. Hope it's OK now.
    $endgroup$
    – butterflyknife
    1 hour ago














-1












-1








-1


1



$begingroup$


I have written a very simple Tkinter program to convert km to miles: it consists of a text entry box, a button, and a text box to print the output to.



Model:
The model just does the multiplication:



def km_to_miles(self, s):
if len(s) > 0:
return float(s)*


View:
The view is initialised with a button b1, an entry box e1, and a text output box t1:



self.b1 = Tk.Button(master, text = "Execute")
self.e1_value = Tk.StringVar()
self.e1 = Tk.Entry(master, textvariable = self.e1_value)
self.t1 = Tk.Text(master, height = 1, width = 20 )


The view also has this code to update the output text box:



def output(self, miles):
self.t1.delete(1.0, Tk.END)
self.t1.insert(Tk.END, miles)


Controller:
I'm worried about the following code in my Controller class (the method is bound to the button b1):



def execute(self, event):
km = self.view.e1_value.get()
miles = self.model.km_to_miles(km)
self.view.output(miles)


Question: Is this correctly following the MVC pattern, or am I mixing up GUI and "business" logic?



The repo is uploaded here: https://github.com/masumshaikh/UdemyPythonMegaCourse/tree/master/003%20Tkinter



instructor.py is the code that was presented in a lecture, which I have tried to translate to the MVC patter in km_to_miles.py.










share|improve this question









New contributor




butterflyknife is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.







$endgroup$




I have written a very simple Tkinter program to convert km to miles: it consists of a text entry box, a button, and a text box to print the output to.



Model:
The model just does the multiplication:



def km_to_miles(self, s):
if len(s) > 0:
return float(s)*


View:
The view is initialised with a button b1, an entry box e1, and a text output box t1:



self.b1 = Tk.Button(master, text = "Execute")
self.e1_value = Tk.StringVar()
self.e1 = Tk.Entry(master, textvariable = self.e1_value)
self.t1 = Tk.Text(master, height = 1, width = 20 )


The view also has this code to update the output text box:



def output(self, miles):
self.t1.delete(1.0, Tk.END)
self.t1.insert(Tk.END, miles)


Controller:
I'm worried about the following code in my Controller class (the method is bound to the button b1):



def execute(self, event):
km = self.view.e1_value.get()
miles = self.model.km_to_miles(km)
self.view.output(miles)


Question: Is this correctly following the MVC pattern, or am I mixing up GUI and "business" logic?



The repo is uploaded here: https://github.com/masumshaikh/UdemyPythonMegaCourse/tree/master/003%20Tkinter



instructor.py is the code that was presented in a lecture, which I have tried to translate to the MVC patter in km_to_miles.py.







design-patterns mvc tkinter






share|improve this question









New contributor




butterflyknife is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.











share|improve this question









New contributor




butterflyknife is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.









share|improve this question




share|improve this question








edited 1 hour ago







butterflyknife













New contributor




butterflyknife is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.









asked 2 hours ago









butterflyknifebutterflyknife

11




11




New contributor




butterflyknife is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.





New contributor





butterflyknife is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.






butterflyknife is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.








  • 2




    $begingroup$
    Welcome to Code Review! As per the rules in the help center, the code to be reviewed must be embedded in the question itself. You may include a GitHub link as supplementary material.
    $endgroup$
    – 200_success
    2 hours ago






  • 1




    $begingroup$
    Also, please retitle the question to state the task accomplished by the code, rather than your primary concern about the code. See How to Ask.
    $endgroup$
    – 200_success
    1 hour ago










  • $begingroup$
    @200_success: thank you for the guidance. I hope the edits I just made have improved the question.
    $endgroup$
    – butterflyknife
    1 hour ago










  • $begingroup$
    No. There must be enough code embedded directly in the question such that the question makes sense even without the GitHub link.
    $endgroup$
    – 200_success
    1 hour ago










  • $begingroup$
    @200_success. Thanks again. Hope it's OK now.
    $endgroup$
    – butterflyknife
    1 hour ago














  • 2




    $begingroup$
    Welcome to Code Review! As per the rules in the help center, the code to be reviewed must be embedded in the question itself. You may include a GitHub link as supplementary material.
    $endgroup$
    – 200_success
    2 hours ago






  • 1




    $begingroup$
    Also, please retitle the question to state the task accomplished by the code, rather than your primary concern about the code. See How to Ask.
    $endgroup$
    – 200_success
    1 hour ago










  • $begingroup$
    @200_success: thank you for the guidance. I hope the edits I just made have improved the question.
    $endgroup$
    – butterflyknife
    1 hour ago










  • $begingroup$
    No. There must be enough code embedded directly in the question such that the question makes sense even without the GitHub link.
    $endgroup$
    – 200_success
    1 hour ago










  • $begingroup$
    @200_success. Thanks again. Hope it's OK now.
    $endgroup$
    – butterflyknife
    1 hour ago








2




2




$begingroup$
Welcome to Code Review! As per the rules in the help center, the code to be reviewed must be embedded in the question itself. You may include a GitHub link as supplementary material.
$endgroup$
– 200_success
2 hours ago




$begingroup$
Welcome to Code Review! As per the rules in the help center, the code to be reviewed must be embedded in the question itself. You may include a GitHub link as supplementary material.
$endgroup$
– 200_success
2 hours ago




1




1




$begingroup$
Also, please retitle the question to state the task accomplished by the code, rather than your primary concern about the code. See How to Ask.
$endgroup$
– 200_success
1 hour ago




$begingroup$
Also, please retitle the question to state the task accomplished by the code, rather than your primary concern about the code. See How to Ask.
$endgroup$
– 200_success
1 hour ago












$begingroup$
@200_success: thank you for the guidance. I hope the edits I just made have improved the question.
$endgroup$
– butterflyknife
1 hour ago




$begingroup$
@200_success: thank you for the guidance. I hope the edits I just made have improved the question.
$endgroup$
– butterflyknife
1 hour ago












$begingroup$
No. There must be enough code embedded directly in the question such that the question makes sense even without the GitHub link.
$endgroup$
– 200_success
1 hour ago




$begingroup$
No. There must be enough code embedded directly in the question such that the question makes sense even without the GitHub link.
$endgroup$
– 200_success
1 hour ago












$begingroup$
@200_success. Thanks again. Hope it's OK now.
$endgroup$
– butterflyknife
1 hour ago




$begingroup$
@200_success. Thanks again. Hope it's OK now.
$endgroup$
– butterflyknife
1 hour ago










0






active

oldest

votes











Your Answer





StackExchange.ifUsing("editor", function () {
return StackExchange.using("mathjaxEditing", function () {
StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix) {
StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["\$", "\$"]]);
});
});
}, "mathjax-editing");

StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");

StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "196"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});

function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});


}
});






butterflyknife is a new contributor. Be nice, and check out our Code of Conduct.










draft saved

draft discarded


















StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f214802%2fimplementing-the-mvc-pattern-properly-in-tkinter%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown

























0






active

oldest

votes








0






active

oldest

votes









active

oldest

votes






active

oldest

votes








butterflyknife is a new contributor. Be nice, and check out our Code of Conduct.










draft saved

draft discarded


















butterflyknife is a new contributor. Be nice, and check out our Code of Conduct.













butterflyknife is a new contributor. Be nice, and check out our Code of Conduct.












butterflyknife is a new contributor. Be nice, and check out our Code of Conduct.
















Thanks for contributing an answer to Code Review Stack Exchange!


  • Please be sure to answer the question. Provide details and share your research!

But avoid



  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.


Use MathJax to format equations. MathJax reference.


To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f214802%2fimplementing-the-mvc-pattern-properly-in-tkinter%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

How to make a Squid Proxy server?

第一次世界大戦

Touch on Surface Book