Отключить функциональность кнопок (виджеты Wx)
Поэтому я использую фрейм WxDev для разработки GUI нашей программы. Таким образом, он имеет две кнопки "Загрузить" и "Анализ".
Последовательность должна быть загружена пользователем. После загрузки он может нажать кнопку "Анализ". Теперь, когда он нажмет на анализ, я хочу отключить его. Кнопка будет активирована только тогда, когда появится новое изображение для анализа.
Вот код для кнопок, которые у меня есть, хотя это может быть неактуально.
ЗАГРУЗКИ:
void NBA_Jersey_RecognitionFrm::WxButton1Click(wxCommandEvent& event)
{
openIMGFileDialog->ShowModal();
if (openIMGFileDialog->GetPath().IsEmpty())
{
return;
}
imageopen = imgFile.LoadFile(openIMGFileDialog->GetPath(), wxBITMAP_TYPE_ANY);
int h = imgFile.GetHeight();
int w = imgFile.GetWidth();
pic.Create(w,h);
for (int x = 0; x < w; x++)
{
for (int y = 0; y < h; y++)
{
pic.SetRGB(x, y, 240, 240, 240);
}
}
if (300 >= (h*300/w))
{
displayIMG->SetBitmap(pic.Scale(300,h*300/w));
displayIMG->SetBitmap(imgFile.Scale(300,h*300/w));
}
else
{
displayIMG->SetBitmap(pic.Scale(w*300/h,300));
displayIMG->SetBitmap(imgFile.Scale(w*300/h,300));
}
}
Вот выдержка из моей кнопки АНАЛИЗ:
void NBA_Jersey_RecognitionFrm::WxButton1Click0(wxCommandEvent& event)
{
ofstream resultsFile;
stringstream ss;
string s;
int height = imgFile.GetHeight();
int width = imgFile.GetWidth();
RedVal = new int* [width];
GreenVal = new int* [width];
BlueVal= new int* [width];
for(int i=0; i<width; i++) {
RedVal[i] = new int[height];
GreenVal[i] = new int[height];
BlueVal[i] = new int[height];
}
//int RedVal[width][height];
//int GreenVal[width][height];
//int BlueVal[width][height];
resultsFile.open("results.txt");
//resultsFile << "x,y,Red,Green,Blue \n";
for(int h=0; h<height; h++) {
for(int w=0; w<width; w++) {
RedVal[w][h]=imgFile.GetRed(w,h);
GreenVal[w][h]=imgFile.GetGreen(w,h);
BlueVal[w][h]=imgFile.GetBlue(w,h);
//ss << h << "," << w << "," << RedVal[0][h] << "," << GreenVal[0][h] << "," << BlueVal[0][h] <<"\n";
//resultsFile << ss.str();
//resultsFile << h << "," << w << "," << RedVal[w][h] << "," << GreenVal[w][h] << "," << BlueVal[w][h] <<"\n";
}
}
Есть ли в WxDev C++ встроенная функция отключения кнопки? Или что мне добавить в код, который у меня есть? Спасибо.
1 ответ
Вы можете отключить кнопку (и большинство элементов управления) следующим образом:
void NBA_Jersey_RecognitionFrm::WxButton1Click0(wxCommandEvent& event)
{
m_analyzeButton->Enable(false);
...
Затем, чтобы снова включить его:
void NBA_Jersey_RecognitionFrm::WxButton1Click(wxCommandEvent& event)
{
openIMGFileDialog->ShowModal();
if (openIMGFileDialog->GetPath().IsEmpty())
{
return;
}
m_analyzeButton->Enable(true);
...
Замените "m_analyzeButton" своим именем для кнопки.