Это называется назначением кортежей. например, если вы хотите инициировать две переменные x и y и назначить для них два значения a и b, вы можете сделать это следующим образом:
x = a
y = b
или просто:
x, y = a, b
в этом случае первое значение «a» будет назначено первой переменной «x», а второе значение «b» будет назначено второй переменной «y». В этом очень полезно поменять два значения без использования временной переменной следующим образом: x, y = y, x
в вашем случае вы инициируете две переменные: носки и пары, поэтому за ними должны следовать два значения , В вашем случае:
socks = Counter(map(int, input().strip().split()))
pairs = 0
Итак, совершенно очевидно, что вы не можете присвоить одно значение двум переменным. так что вы не можете удалить 0 (начальное значение пар), которое является зарезервированной переменной для накопления во время цикла.
Я только что прошел этот же процесс. Попробовав слишком много перестановок resize()
, adjustSize()
и друзей в док-виджетах и содержащихся в них виджетах, ни один из которых не сработал, я получил подклассы QListView
и добавил метод sizeHint()
.
Теперь это работает как шарм.
Звучит так, будто виджет-док изменяет свой размер до нужного размера, учитывая его дочерний виджет. Из документации QDockWidget (выделено мной):
QDockWidget действует как обертка для своего дочернего виджета, установленного с помощью setWidget (). Настраиваемые подсказки размеров, минимальные и максимальные размеры и политики размера должны быть реализованы в дочернем виджете . QDockWidget будет уважать их, корректируя свои собственные ограничения, чтобы включить фрейм и заголовок. Ограничения размера не должны быть установлены на самом QDockWidget, потому что они изменяются в зависимости от того, присоединен ли он к док-станции; закрепленный QDockWidget не имеет рамки и меньшей строки заголовка.
Чтобы изменить размер, необходимо изменить размер дочернего виджета.
РЕДАКТИРОВАТЬ: документация Qt иногда может вводить в заблуждение, когда обсуждаются подсказки размера. Часто это относится к любому виду изменения размера, выполняется ли оно автоматически виджетом или программно.
Тесты с использованием изменения размера на QDockWidget::widget()
(т.е. виджет, которым управляет QDockWidget
) не всегда работают должным образом.
С подклассом QDockWidget
(DW), в который добавлен QWidget
с QHBoxLayout
, который имеет два виджета ( левая панель и правая панель ), каждый из которых имеет свои политика размера установлена на QSizePolicy::Minimum
, в DW обычно видны оба виджета панели. Когда DW расположен в боковой док-станции, слот приложения (QMainWindow
), обрабатывающий сигнал DW dockLocationChanged
, скрывает левую панель и изменяет размеры DW->widget()
до размера правой панели. Когда DW программно перемещается в нижнюю область дока, leftPanel устанавливается видимым, и DW заполняет всю ширину главного окна (конечно). Когда DW затем программно перемещается в боковую область дока, левая панель скрывается, а DW изменяет размеры вниз. Это работает как задумано. Однако, если DW перетаскивается из нижней области дока в боковую область дока, хотя левая панель скрыта, а изменение размера применено, как и раньше, размер DW не уменьшается, как при перепрограммировании. Размер DW можно вручную уменьшить, перетаскивая ручку сплиттера между DW и центральной областью главного окна. Обратите внимание, что центральная область главного окна - это QWidget
, имеющая QHBoxLayout
с размерами политик QSizePolicy::Expanding
.
Вызов adjustSize
в главном окне после изменения размера DW не имеет никакого эффекта. Это несмотря на то, что DW повторно реализовал sizeHint
, чтобы вернуть его минимальный размер в зависимости от того, видна ли левая панель или нет.
Либо я что-то упускаю в том, как контролировать размер QDockWidget
(что, учитывая трудности, с которыми я столкнулся, понимая все взаимодействия между частями системы управления компоновкой, вполне вероятно), либо QMainWindow
игнорирует или отменяет инструкции макета, которые ему даются. Тщательное изучение потока событий во время операций репозиции QDockWidget
позволяет предположить следующее: после обработки слота сигнал dockLocationChanged
выполнил свою работу по изменению размера и вернулся в цикл обработки событий. Я вижу, что QMainWindow
, когда репозиционирование пользователя выполнено , применяет дополнительные операции изменения размера к уязвимому QDockWidget
, тем самым отменяя логику приложения, которая пытается контролировать размер дока. Что-то не так в QMainWindow
....
Если док-виджеты закреплены, размеры контролируются их родителем. В таких случаях вы можете использовать функцию QMainWindow::resizeDocks
.
Если плавающий, размеры определяются их детьми. Измените размер детей , чтобы достичь вашей цели.
Проблема изменения размера док-виджетов при максимизации MainWindow описана в QTBUG-16252 ( https://bugreports.qt.io/browse/QTBUG-16252 )
I ' Мы нашли другой обходной путь. У меня работает на QT 5.4.1 minGW на Windows7. Похоже, что некоторые операции восстановления состояния виджета тесно связаны с циклом событий QApplication.
Размеры DockWidget восстанавливаются корректно ТОЛЬКО при соблюдении следующих условий:
restoreGeometry () вызывается ДО ввода QApplication :: exec () (например, в конструкторе вашего класса MainWindow)
restoreState () называется ПОСЛЕ exec () (например, через QTimer)
Вот мой код:
int main(int argc, char *argv[])
{
QApplication application(argc, argv);
//...
MainWindow mainWindow;
mainWindow.show();
return application.exec();
}
MainWindow::MainWindow(...)
{
ui->setupUi(this);
//...
QTimer* nt = new QTimer(this);
nt->setSingleShot(true);
nt->setInterval( 100 );
connect(nt, SIGNAL(timeout()), SLOT(restoreWidgetSettings()));
nt->connect(nt, SIGNAL(timeout()), SLOT(deleteLater()));
nt->start();
restoreWidgetSettings(true);
}
void MainWindow::restoreWidgetSettings(bool geometryOnly) {
//...
QByteArray geometry = getSettings();
restoreGeometry(geometry);
if(geometryOnly)
return;
//... //create dock widgets here
restoreState(mainWindowState);
}
Пробовали ли вы вызвать resize()
на QTextEdit
внутри вашего док-виджета? Вы также можете попробовать временно установить максимальный и минимальный размеры виджета док-станции на нужный вам размер, а затем восстановить исходные значения.