1
votes

comment ajouter un bouton à python

Comment puis-je ajouter un bouton qui ouvre chrome en python J'ai déjà écrit la window_page sachant que j'ai besoin du bouton voici le code:

from tkinter import *
window = Tk()
window.title("Python GUI App")
window.configure(width=500, height=300)
window.configure(bg='lightgray')
window.mainloop()


3 commentaires

Je n'ai pas compris votre question, mais c'est une mauvaise pratique d'utiliser plusieurs conditions if, vous auriez pu utiliser des instructions switch case


La question n'est certainement pas clairement écrite, et une instruction switch pourrait bien être une meilleure option - mais si je comprends bien la question, il vous suffit d'utiliser else if pour toutes les instructions if autres que la première - donc la structure est if / else if / else if / else if [...] / else


Vous devez utiliser else if


3 Réponses :


4
votes

Le problème réside dans votre structure. Si vous utilisez else il fait toujours référence au dernier if et à tout else if entre eux. Donc, si votre dernier if est faux, ce qui arrive si le signL n'est pas "%" vous entrerez toujours le else .

Pour résoudre ce problème, vous devez corriger vos instructions if , en utilisant des instructions else if .

Exemple avec conditions IF:

switch(signL) {
case "*":
    Console.Write("result is: ");
    Console.WriteLine(frsIn * secIn);        
    break;
case "+":
    Console.Write("result is: ");
    Console.WriteLine(frsIn + secIn);        
    break;
case "/":
    Console.Write("result is: ");
    Console.WriteLine(frsIn / secIn);        
    break;
case "-":
    Console.Write("result is: ");
    Console.WriteLine(frsIn - secIn);        
    break;
case "%":
    Console.Write("result is: ");
    Console.WriteLine(frsIn / secIn);        
    break;
default:
    Console.Write("Wrong");
    break;
}

Ou vous pouvez utiliser un boîtier de switch que je conseillerais lorsque vous souhaitez vérifier les variables constantes.

Exemple avec Switch Case:

if (signL == "*") {
    Console.Write("result is: ");
    Console.WriteLine(frsIn * secIn);
}
else if (signL == "+") {
    Console.Write("result is: ");
    Console.WriteLine(frsIn + secIn);
}
else if (signL == "/") {
    Console.Write("result is: ");
    Console.WriteLine(frsIn / secIn);
}
else if (signL == "-") {
    Console.Write("result is: ");
    Console.WriteLine(frsIn - secIn);
}
else if (signL == "%") {
    Console.Write("result is: ");
    Console.WriteLine(frsIn / secIn);
}
else {
    Console.Write("Wrong");
}


0 commentaires

0
votes

Pour tout sauf la première ligne, vous voulez else if plutôt que if . Encore mieux serait une déclaration de switch .

Dans le code actuel, considérez si signL est "/". Il échoue aux tests 1, 2 et 4 mais réussit 3.

Mais alors il échoue 5 ("%") et va donc dans la clause else , et donne ainsi à la fois le résultat de la division et "faux".

Utiliser if else donnerait:

switch (signL)
{
    case "*":
        Console.Write("result is: ");
        Console.WriteLine(frsIn * secIn);
        break;

    case "+":
        Console.Write("result is: ");
        Console.WriteLine(frsIn + secIn);
        break;

    case "/":
        Console.Write("result is: ");
        Console.WriteLine(frsIn / secIn);
        break;

    case "-":
        Console.Write("result is: ");
        Console.WriteLine(frsIn - secIn);
        break;

    case "%":
        Console.Write("result is: ");
        Console.WriteLine(frsIn % secIn);
        break;

    default;
        Console.Write("Wrong");
        break;
}

Cependant, ceci est inefficace car avec, par exemple "%", il y aura eu cinq comparaisons - quatre échouent une passe.

Une select ne nécessite que la comparaison (de la chaîne a, pour être précis):

if (signL == "*")
{
    Console.Write("result is: ");
    Console.WriteLine(frsIn * secIn);
}
else if (signL == "+")
{
    Console.Write("result is: ");
    Console.WriteLine(frsIn + secIn);
}
else if (signL == "/")
{
    Console.Write("result is: ");
    Console.WriteLine(frsIn / secIn);
}
else if (signL == "-")
{
    Console.Write("result is: ");
    Console.WriteLine(frsIn - secIn);
}
else if (signL == "%")
{
    Console.Write("result is: ");
    Console.WriteLine(frsIn / secIn);
}
else
{
     Console.Write("Wrong");
}


0 commentaires

0
votes

Pourquoi ne pas utiliser else if ? car si votre dernière condition if (signL == "%") est incorrecte, elle redirige toujours vers l'instruction else

if (signL == "*")
{
   Console.Write("result is: ");
   Console.WriteLine(frsIn * secIn);
}
else if (signL == "+")
{
  Console.Write("result is: ");
  Console.WriteLine(frsIn + secIn);
}
else if (signL == "/")
{
  Console.Write("result is: ");
  Console.WriteLine(frsIn / secIn);
}
else if (signL == "-")
{
  Console.Write("result is: ");
  Console.WriteLine(frsIn - secIn);
}
else if (signL == "%")
{
  Console.Write("result is: ");
  Console.WriteLine(frsIn / secIn);
}
else
{
  Console.Write("Wrong");
}


0 commentaires