Как использовать оператор Drawable в If / else для setImageResource?

Использование:

import tkinter as tk

if __name__ == '__main__':
    root = tk.Tk()
    root.title('Centered!')

    w = 800
    h = 650

    ws = root.winfo_screenwidth()
    hs = root.winfo_screenheight()
    x = (ws/2) - (w/2)
    y = (hs/2) - (h/2)

    root.geometry('%dx%d+%d+%d' % (w, h, x, y))

    root.mainloop()
0
задан Rafael N. De Pietro 3 March 2019 в 20:40
поделиться

2 ответа

Когда пользователь нажимает на вашу кнопку, вы хотите сделать 2 вещи. Вы хотите показать несколько изображений, или вы хотите позвонить finish().

Я бы предложил использовать boolean в качестве флага состояния и сравнить его вместо сравнения самого ImageView. Это будет проще, и ваш код будет легче читать.

Я создал флаг с именем firstClick, который по умолчанию установлен на true. Когда пользователь нажимает вашу кнопку (button1 в этом примере), мы проверяем это и показываем изображения. Затем мы устанавливаем его на false, поэтому следующий щелчок вызовет finish().

private ImageView equipament1;
private ImageView equipament2;

// The current state of the Activity
private boolean firstClick = true;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_analise)                        
    equipament1 = findViewById(R.id.equipamento1);
    equipament2 = findViewById(R.id.equipamento2);


    // Setting your OnClickListener
    Button button = (Button) findViewById(R.id.button1);
    button.setOnClickListener(new OnClickListener() {

        public void onClick(View v) {
            if( firstClick ) {
                firstClick = false;
                sentImg();
            } else {
                finish();
            }
        }
    });
}

public void sentImg() {
    equipament1.setImageResource(R.drawable.reactor);
    equipament2.setImageResource(R.drawable.reactor);
}
0
ответ дан Advice-Dog 3 March 2019 в 20:40
поделиться

Проблема в том, что во второй раз вы уже изменили значение компаратора.

Если цель состоит в том, чтобы просто изменить изображения, вам не нужно if / else.

private ImageView equipament1;
private ImageView equipament2;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_analise)                        
    equipament1 = findViewById(R.id.equipamento1);
    equipament2 = findViewById(R.id.equipamento2);


public void sentImg() {
    equipament1.setImageResource(R.drawable.reactor);
    equipament2.setImageResource(R.drawable.reactor);
}
0
ответ дан Marc LaQuay 3 March 2019 в 20:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: